关于public ,private protect
2016-05-18 10:19
253 查看
protect和private成员要使用本类的成员函数去访问,不能直接使用其本类的对象访问。注意:基类的protect成员变量可以被子类的成员函数去访问,但基类的private成员 变量不能能被子类的成员函数访问。 也就是说protect和private成员变量都可以被本类的成员函数访问,但protect变量还可以被子类的成员函数访问,但private变量不行, 这就是private变量和protect变量的区别。 stud.num=100;//出错,//假如num是Student类的protected成员,不能直接使用对象访问。但这样就可访问 到私有成员了。 class myD { private: int a; public: int Getint() {return a+b;} protect: int b; public: myD(int x,int y):a(x),b(y){} }; class myson: public myD { private: int a; public: int Get() {return myDa::b;} }; 只有构造函数可以有基/成员初始值列表。如下将错误, class myD { private: int a; protected: int b; public: // myD():a(11),b(22){} int Getint():a(11),b(22) { cout << a<< endl; return a;} int get() {return b;} }; 正确如下 class myDR { private: int a; protected: int b; public: myDR():a(11),b(22) {} int GetA(){ cout << a<< endl; return a;} int getB() {return b;} }; main() { myD myd; myd.get(); myd.Getint(); int c = myd.a; //错误,不能使用对象直接访问protect和private成员 int i = myd.b; //错误,同上 mySON mySd; int i= mySd.get(); }