프로그래밍 공부

컴퓨터 용어 정리 76

카테고리 설명
  • 함수에 전달된 인수는 원본 데이터에 대한 참조(레퍼런스) 로 처리된다. 따라서 함수 내에서 인수를 수정하면 호출자에게도 영향을 미치게 된다. void modifyReference(int &x) { x = x * 2; } int main() { int num = 5; modifyReference(num); // num은 이제 10입니다. return 0; } 매개변수로 받아온 값을 수정하면 결과값 또한 바뀌는걸 볼 수 있다. 장점 메모리 효율 데이터를 복사하지 않고도 데이터 수정이 가능함으로 메모리 사용량을 절약할 수 있다. 성능 향상 데이터를 복사하지 않음으로 복사하는 과정을 생략할 수 있다. 단점 수정가능 함수 내에서 수정을 할때 호출자의 데이터가 수정될 수 있음으로 의도치 않은 데이터변경이 발생할 수..

  • 함수에 의해 전달된 인수는 해당 함수에 복사된 값으로 처리된다. 따라서 함수 내에서 인수를 설정하거나 바꾸어도 호출된 매개변수에는 영향을 끼치지 않는다. void modifyValue(int x) { x = x * 2; } int main() { int num = 5; modifyValue(num); // num은 여전히 5입니다. return 0; } 위와같이 처리된다면, x의 값에는 변화가 이루어지지 않는다. 장점 예측가능한 변수 (Predictable Behavior) 함수에서 인수를 수정하더라도 호출자에 영향을 미치지 않기에 예측이 가능. 데이터 보호 호출자의 데이터를 보호하여 실수로 값이 변경되는걸 방지함. 단점 메모리 사용 크기가 큰 데이터 구조를 전달할 경우, 메모리 사용량이 증가할 수 있다..

  • 행렬의 기초 이해 행렬 연산 자체는 매우 쉽게 이루어져있다. 말 그대로 1항과 2항의 곱을 행과 열로 수행한다 라고 이해하면 되는데. 가령. XY 행렬이 존재할때. 1번행렬이 파란색 2번행렬이 빨간색 이라고 하자. 그렇다면, 각각의 해당하는 가로줄과 세로줄을 곱해준뒤 더하면 된다. 잘 이해가 안간다면 밑의 이미지로 쉽게 이해하도록 설명해놓았으니 살펴보자. 노란색 이 결과물로 나타나는 결과값이다. 노란색의 위치에 나타나는 행렬은 위치좌표대로 연산하면 될것이다. 행렬연산의 유의점 이런 특성을 가진것이 행렬인데, 행렬곱을 실행할 수 없는 경우도 발생한다. 다음과 같은 예시를 살펴보자. 행렬연산을 진행할 때 1번 행렬의 행과 2번행렬의 열이 같지 않으면 행렬연산을 진행할 수 없다. 반대로 진행할때도 마찬가지로 ..

  • 입력된 행렬값을 그대로 돌려주는 행렬을 의미한다. 컴퓨터 공학쪽에서는 Float3같은 XYZ축 데이터를 행렬로 변환할때 주로 이용한다. 예를들면. X축의 위치이동에 어느정도를 더할지 행렬로 바꾸려면 엄청 애매해지는데. 그냥 단위행렬에 이용되는 위치값에 더해버리면 X축의 위치이동에 사용할 수 있다.

  • 가상함수는 기본 클래스에서 선언되고 파생 클래스에서 재정의(override) 될 수 있는 함수이다. 가상 함수를 사용하면, 부모 클래스의 포인터나 참조를 사용하여 자식 클래스의 메서드를 호출 할 수 있으며, 실행 중 객체의 실제 유형에 따라 올바른 메서드가 호출된다. 이를 통해 다형성을 구현할 수 있으며, 코드의 유연성과 재사용성을 향상시킨다. 다형성을 지원하며, 객체 실 유형에 따라 다른동작을 수행할 수 있다. 기본 클래스에서 기본 동작을 정의하고 자식 클래스에서 필요에 맞게 다시 재정의 가 가능하다. 객체 지향 설계 원칙 중 하나인 "개방-폐쇄 원칙"(Open-Closed Principle)를 준수할 수 있다. 단점은 일반 함수보다 오버헤드가 더 많이발생하나, 무시할만한 수준이다. #include c..

  • 부모 클래스의 포인터나 참조를 사용하여 자식 클래스의 객체로 변환하는것을 의미한다. 엄격한 형변환으로 형변환 연산자를 사용하여 수행해야한다. 업케스팅 된 객체를 다시 원래 파생클래스로 되돌릴 수 있다. 업케스팅된 객체가 실제로 어떤 파생 클래스 객체인지 확인할 수 있다. 주의! 잘못된 다운케스팅은 런타임 에러를 발생시킬 수 있다. 다운케스팅은 모든 경우에 사용할 수 있는것이 아니다. class Animal { public: virtual void makeSound() { cout