C++中public,protected,private访问小结
2013-03-14 10:11
169 查看
第一:private,public,protected方法的访问范围.
private: 只能由该类中的方法访问,不能被该类的对象访问.
protected: 可以被该类中的方法和其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的方法和其友元函数访问,也可以由该类的对象访问
第二:类的继承后方法属性变化:
使用private继承,父类的所有方法在子类中变为private;
使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;
使用public继承,父类中的方法属性不发生改变;
protected继承和private继承能降低访问权限。
再次提到:可以提供访问行为的主语为"函数"
类体内的访问没有访问限制一说。即private函数可以访问public/protected/private成员函数或数据成员
同理,protected函数,public函数也可以任意访问该类体内定义的成员。
public继承下,基类中的public和protected成员继承了为该类的public和protected成员(成员函数或数据成员),然后访问依然按类内的无限制访问。
同样,假如虚函数,可以看到VC编译器将vptr放置在数据区的最开头。
转自:http://wenku.baidu.com/view/ce21e1d73186bceb19e8bbe3.html
private: 只能由该类中的方法访问,不能被该类的对象访问.
protected: 可以被该类中的方法和其友元函数访问,但不能被该类的对象访问
public: 可以被该类中的方法和其友元函数访问,也可以由该类的对象访问
第二:类的继承后方法属性变化:
使用private继承,父类的所有方法在子类中变为private;
使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变;
使用public继承,父类中的方法属性不发生改变;
protected继承和private继承能降低访问权限。
再次提到:可以提供访问行为的主语为"函数"
类体内的访问没有访问限制一说。即private函数可以访问public/protected/private成员函数或数据成员
同理,protected函数,public函数也可以任意访问该类体内定义的成员。
public继承下,基类中的public和protected成员继承了为该类的public和protected成员(成员函数或数据成员),然后访问依然按类内的无限制访问。
#include<iostream> using namespace std; class C{ public: C(int val):m_c(val){} private: int m_c; }; class D:public C{ public: D(int val1, int val2):C(val1),m_d(val2){} int m_d; }; int main() { cout<<sizeof(C)<<" "<<sizeof(D)<<endl; //4 8 D obj(2,25); cout<<&obj<<" "<<&obj.m_d<<endl; //0x0012FF78 0x0012FF7C //cout<<obj.m_c; //error, 不能访问 D *ptr=&obj; int *iptr=(int *)ptr; cout<<*iptr<<" "<<*(iptr+1)<<endl; // 2 25 return 0; }
同样,假如虚函数,可以看到VC编译器将vptr放置在数据区的最开头。
转自:http://wenku.baidu.com/view/ce21e1d73186bceb19e8bbe3.html
相关文章推荐
- C++中public,protected,private访问小结
- C++中 public,protected, private 访问标号小结
- C++中 public,protected, private 访问标号小结
- c++ private public protected-->类的访问权限小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中 public,protected, private 访问标号小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中 public,protected, private 访问权限标号小结
- C++中 public,protected, private 访问标号小结
- C++中 public,protected, private 访问标号小结
- C++中 public,protected, private 访问权限标号小结
- C++中 public,protected, private 访问标号小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++中public,protected,private访问小结
- C++ 类访问控制(public/protected/private)小结
- C++ 类访问控制(public/protected/private)小结
- C++中 public,protected, private 访问标号小结