94构造函数与对象成员内容摘要:

SetY(int a) { y = a。 } int GetY() { return y。 } void Show() { cout GetBX() 39。 \t39。 y。 } }。 这里,成员函数 SetBX( ) 和 GetBX( ) 就是类 Y 为外部访问它从基类 X 那里继承来的数据成员 x 的公有接口。 经过这样的修改, 中的语句 (8)。 就变成一条非法语句,因为它企图调用对象 aY 中的 私有 成员函数 SetX()。 若将该语句改为: (8)。 则程序的输出不变。 由于在私有派生时,派生类通常必须为基类的大多数公有成员函数另外提供一些接口,这不仅使得派生类更加庞大,而且更是大大降低了程序的运行效率。 保护的成员 类中访问属性为 protected 的成员叫做保护的成员。 保护的成员具有双重性质:对于其派生类而言为公有的;而对于外部程序而言则为私有的。 这样的性质使得类成员既方便了派生类的访问,又阻止了外部的随意访问。 例如,若将 中类 X 的 x 成员说明成保护的,则类 Y 中的 Show() 函数将可以写的便加简洁,并且运行效率也得到提高: class X { class Y : public X { protected: //... int x。 void Show() { //… cout x 39。 \t39。 y。 }。 } }。 抽象类与保护的成员函数 所谓 抽象类 ( Abstract Class)是指不能生成实例(对象)的类。 抽象类只能用来派生子类。 有多种因素可以使一个类变为抽象类。 保护的构造函数就是产生抽象类的因素之一。 当一个类中包含有保护的构造函数时,由于外部无法访问这样的构造函数,因而也就无法创建这种类的对象。 然而,对于其派生类而言,则是可以访问这种函数的。 因此派生类可以调用它(们)来为自身所继承来的基类部分分配内存。 保护的析构函数也是产生抽象类的一个因素。 当一个类中包含有保护的析构函数时,由于外部无法调用该函数来撤销对象,从而使得对象永久地占有存储空间。 这种现象是不允许出现的。 因此系统压根儿就不允许这样的对象生成。 多重继承 class derivative : access base1, …, access basen { private: pri_members。 public: pub_members。 protected: pro_members。 }。 注意:说明中每个基类的 访问权限仅修饰该基类本 身。 各个基类的访问权限 必须单独列出,若某个基 类无访问权限关键字,则 缺省为派生类从该基类私 有派生。 // if !defined _MULTDER。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。