C++/Class
2021. 3. 20. 17:27
상속받은 멤버의 접근 권한 변경
using 키워드 사용
#include <iostream> class Base { protected: int i_; }; class Derived : public Base { public: using Base::i_; }; int main() { using std::cout; using std::endl; Derived d; d.i_ = 1024; cout << d.i_ << endl; } /* stdout 1024 */
부모 클래스에서
public
인 멤버 함수를 자식 클래스에서private
로 변경할 수도 있다.- 함수의 경우 괄호를 쓰면 안된다.
#include <iostream> class Base { public: void print() { std::cout << "I'm Base\n"; } }; class Derived : public Base { using Base::print; }; int main() { using std::cout; using std::endl; Derived d; d.print(); // 에러 }
error C2248: 'Derived::print': cannot access private member declared in class 'Derived'
혹은 delete를 사용해서 함수를 사용하지 못하게 하는게 편할 수도 있다.
#include <iostream> class Base { public: void print() { std::cout << "I'm Base\n"; } }; class Derived : public Base { void print() = delete; }; int main() { using std::cout; using std::endl; Derived d; d.print(); // 에러 }
error C2280: 'void Derived::print(void)': attempting to reference a deleted function
'C++ > Class' 카테고리의 다른 글
C++ 다형성 (Polymorphism) (0) | 2021.03.20 |
---|---|
C++ 다중 상속 (0) | 2021.03.20 |
C++ 함수 오버라이딩 (0) | 2021.03.20 |
C++ 상속과 접근 지정자 (0) | 2021.03.20 |
C++ 상속과 패딩 (0) | 2021.03.20 |