这次上机主要是对派生与继承的了解学习。给定的代码运行时有很多访问错误,自己也改了改基类成员的类别,也改了改派生方式的类别,认识很深。
首先,基类里有一个成员x,如果x为私有成员,那么x只能在基类里被访问,无论派生类里还是外部都无法访问;如果x为保护成员,即protectd,那么x在基类里和派生类里可以直接访问,但在外部不能直接访问;如果x是公有成员,那么就是完全开放于外界,无论谁都可以直接访问。
派生分为三类派生方式。基类成员在被派生之后,表现在外部的属性取决于在基类的属性和派生方式的共同作用。具体就是“从严”。即公有继承那么基类成员在子类属性不变,私有继承基类在子类全为私有,保护继承的话,基类若为私有则在子类也是私有,若不是那么在子类也为保护属性。
一般基类的成员为私有成员,然后用公有成员函数来访问私有成员,那么这个公有函数就可作为基类与外界的接口,派生类和主函数都可以通过这个公有的成员函数来访问基类私有成员。
感觉一般继承都会使用公有继承吧,方便主函数里调用派生类的成员和成员函数。
#includeusing namespace std; class base { public: void setx(int i) { x = i; } int getx() { return x; } public: int x; }; class Derived :public base { public: void sety(int i) { y = i; } int gety() { return y; } void show() { cout << "base::x=" << x << endl; } public: int y; }; int main() { Derived bb; bb.setx(16); bb.sety(25); bb.show(); cout << "base::x=" << bb.x << endl; cout << "Derived::y=" << bb.y << endl; cout << "base::x=" << bb.getx() << endl; cout << "Derived::y=" << bb.gety() << endl; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)