C++ unmanaged 3

연산자 오버로딩의 3가지 형태

3가지 구현중 1가지만 있으면 된다. using namespace std; //산술 연산자 오버로딩 class Cents { int m_value; public: Cents(const int& value) { m_value = value; } const int& getValue() const { return m_value; } const void setValue(const int& value) { m_value = value; } // 1. Cents 의 매개함수의 형태 int operator +(const Cents& c2) { return Cents(this->m_value + c2.m_value).getValue(); } // 2. Cetnts 내부에 있지만 friend 로 인해 외부함수나 다름없는..

C++ unmanaged 2021.11.25

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

아래 코드는 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& c..

C++ unmanaged 2021.11.25

WHAT IS THE FRIEND?

doSomething 에서 각각의 a, b 객체의 멤버 변수에 접근을 시도하려고 하는데 에러뜬다. 왜? 클래스 내부에서 private 로 선언되어있기 때문. 해결방법 : 각각의 클래스에 doSomething의 이름에 friend를 붙인 놈을 넣는다. (의미 : void 함수 doSomething(A& a, B& b) => 이놈은 나의 친구다) 코드 실행순서 => doSomething(a, b) 실행 -> a.m_value 찾아가기 -> a.m_value가 있는 class A로 들어가기 -> 원칙상 private 로 선언되있는 m_value에 접근할수 없지만 doSomething이 친구라고 선언해놓음.(그니까 친구니까 특별하게 접근 허용을 해주는거임) -> ㅇㅋ 하고, friend void doSometh..

C++ unmanaged 2021.11.25