C++编程中私有和保护以及公有的类成员访问控制
private private: [member-list] private base-class 备注 // keyword_private.cpp class BaseClass { public: // privMem accessible from member function int pubFunc() { return privMem; } private: void privMem; }; class DerivedClass : public BaseClass { public: void usePrivate( int i ) { privMem = i; } // C2248: privMem not accessible // from derived class }; class DerivedClass2 : private BaseClass { public: // pubFunc() accessible from derived class int usePublic() { return pubFunc(); } }; int main() { BaseClass aBase; DerivedClass aDerived; DerivedClass2 aDerived2; aBase.privMem = 1; // C2248: privMem not accessible aDerived.privMem = 1; // C2248: privMem not accessible // in derived class aDerived2.pubFunc(); // C2247: pubFunc() is private in // derived class }
protected: [member-list] protected base-class 备注 // keyword_protected.cpp // compile with: /EHsc #include <iostream> using namespace std; class X { public: void setProtMemb( int i ) { m_protMemb = i; } void Display() { cout << m_protMemb << endl; } protected: int m_protMemb; void Protfunc() { cout << "nAccess allowedn"; } } x; class Y : public X { public: void useProtfunc() { Protfunc(); } } y; int main() { // x.m_protMemb; error,m_protMemb is protected x.setProtMemb( 0 ); // OK,uses public access function x.Display(); y.setProtMemb( 5 ); // OK,uses public access function y.Display(); // x.Protfunc(); error,Protfunc() is protected y.useProtfunc(); // OK,uses public access function // in derived class }
public: [member-list] public base-class 备注 // keyword_public.cpp class BaseClass { public: int pubFunc() { return 0; } }; class DerivedClass : public BaseClass {}; int main() { BaseClass aBase; DerivedClass aDerived; aBase.pubFunc(); // pubFunc() is accessible // from any function aDerived.pubFunc(); // pubFunc() is still public in // derived class } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |