영넌 개발로그
[C++ 기초] 객체를 함수의 인수로 전달하는 방식 본문
객체를 함수의 인수로 전달하는 방식은 크게 보면 2가지, 자세히 보면 3가지가 있다.
1. call by valuew
복사본이 넘어가서 오퍼레이션이 행해지고 함수 종료 후, 복사본은 소멸 되고 원래의 객체 값은 변하지 않는다.
2. call by reference(address)
객체의 주소를 넘겨주면, 주소 값을 변경시킬 수 있다. 함수 종료 후에 객체 내용은 변해 있다.
포인터의 일종이라고 생각하면 된다.
3. call by reference variable
예시 코드 >
기본 Car class
class Car
{
private:
int year;
public:
Car(int _year) : year(_year) { }
void showYear()
{
cout << "This car was made in " << year << endl;
}
void changeYear(int _y) {
year = year - _y;
}
};
call by value
결과 값 : 2010 2000 2010
void changeCarYear(Car _c) { //call by value, 복사
_c.changeYear(10);
_c.showYear();
}
int main() {
Car c(2010);
c.showYear();
changeCarYear(c);
c.showYear();
return 0;
}
calll by reference
결과 값 : 2010 2000 2000
void changeCarYear(Car* _c) { //call by refernece
_c->changeYear(10);
_c->showYear();
}
int main() {
Car c(2010);
c.showYear();
changeCarYear(&c);
c.showYear();
return 0;
}
call by reference variable
결과 값 : 2010 2000 2000
void changeCarYear(Car& _c) { //call by refernece variable
_c.changeYear(10);
_c.showYear();
}
int main() {
Car c(2010);
c.showYear();
changeCarYear(c);
c.showYear();
return 0;
}
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] class 내 static 변수, static 함수, const static 변수 (0) | 2020.12.04 |
---|---|
[C++ 기초] Copy constructor (deep copy, shallow copy) (0) | 2020.12.04 |
[C++ 기초] Class 생성자 Constructor / 소멸자 Destructor (0) | 2020.12.04 |
[C++ 기초] 포인터 Pointer / Smart Pointer / this / const pointer (0) | 2020.12.04 |
Comments