C++ unmanaged

헷갈리기쉬운 reference, const !!!!!!!!!!!

느억맘 2021. 11. 25. 17:19

아래 코드는 const 와 reference 를 최대한 많이 때려박은 코드임. 최대한 때려박을수록 좋다

using namespace std;
//산술 연산자 오버로딩
class Cents
{
	int m_value; // private 로 선언된 클래스 멤버변수

public:
	Cents(const int& value) // 1.
	{
		m_value = value;
	}

	const int& getValue() const // 2.
	{
		
		return m_value;
	}

	void setValue(const int& value)
	{
		m_value = value;
	}
	/*int getValue() const
	{
		return m_value;
	}*/
};

int add(const Cents& c1,const Cents& c2) // 2.
{
	return Cents(c1.getValue() + c2.getValue()).getValue();
}

int main()
{
	Cents c1(22);
	Cents c2(10);
	
	cout << add(c1, c2) << endl;

	cout << add(Cents(22), Cents(10)) << endl; // 객체 생성할 메모리도 아까우니 익명클래스로

}

1. 레퍼런스로 받는이상 복사 등의 행위는 일어나지 않는다.

 

=> 즉 주는놈이랑 받는놈이랑 주소가 같다는 뜻이므로 무조건 변수만 넣을 수 있다.

 

=> 레퍼런스를 상수로 받으면 리터럴 값도 넣을 수 있다.

 

=> 사실 

const int const& int

 

int int& 의차이는

 

call by value call by reference 의 차이점 빼고는 차이없다.

 

메모리를 조금이라도 아끼고자 하는 극한의 코딩을 위해서는 무조건 레퍼런스를 사용하는 것이 맞다.

 

고로 const & int => 요놈을 많이 쓰는것이 좋다. 왜냐? const 는 쓸수있다면 가능한 많이 사용하는 것이 나중에 좋기때

문.

 

 

2. 객체가 상수로 선언되면, 그 객체 내의 모든 값들은 못바꾼다는 의미가 된다. 즉,

 

그 객체 내의 함수들을 사용할거면 그 함수의 블럭들도 모두 상수처리해야 사용가능해진다.

 

 

 

'C++ unmanaged' 카테고리의 다른 글

연산자 오버로딩의 3가지 형태  (0) 2021.11.25
WHAT IS THE FRIEND?  (0) 2021.11.25