플로렌스라는 개발자

C++ 클래스 프렌드(class friend)

이번 프렌드는 클래스에 대한 프렌드인데 클래스도 프렌드가 될 수 있습니다. 이러면 프렌드 클래스의 모든 멤버 함수는 오리지널 클래스의 private 멤버와 protected 멤버에 접근할 수 있습니다. class Plorence { private: int age; public: friend class Guest; }; class Guest { public: int GetAge(const Plorence & plo) { return plo.age; } }; Guest클래스에서 Plorence 클래스의 private인 age멤버에 접근하려면 프렌드여야 됩니다. 프렌드로 인하여 Guest 클래스에서 Plorence 클래스의 private,protected멤버에 접근할 수 있습니다. 프렌드 멤버 함수 위에서 프..

프로그래밍/C++ 2019.11.01 Plorence

C++ 클래스 템플릿과 프렌드 함수

클래스 템플릿도 프렌드를 가질 수 있습니다. 템플릿의 프렌드를 3가지로 분류할 수 있습니다. 템플릿이 아닌 프렌드 바운드 템플릿 프렌드(클래스가 구체화될 때 클래스의 데이터형에 의해 프렌드의 데이터형이 결정됩니다.) 언바운드 템플릿 프렌드(프렌드의 모든 특수화가 그 클래스의 각 특수화에 대해 프렌드들입니다.) 템플릿이 아닌 프렌드 template class ClassTemplate { friend void Show(); }; void Show() { } 이 선언은 Show 함수를 그 템플릿의 가능한 모든 구체화들에 대해 프렌드로 만듭니다. 즉 어떤 타입으로 구체화가 되든 항상 프렌드라는 것입니다.(ClassTemplate, ClassTemplate) 그런데 Show 함수가 매개변수로 해당 객체를 가지지 ..

프로그래밍/C++ 2019.10.31 Plorence