怎么做免流网站,常州企业自助建站系统,seo全网图文推广,现在网站做多宽在之前论证过c如何将public 继承视为 is-a 关系。在哪个例子里#xff0c;class Student 以 public 形式继承class Person#xff0c; 于是编译器在必要时刻将Students暗自转化为Person.如果此时我们以 private 继承替换 public继承。
class Person {...};
class Student: p…在之前论证过c如何将public 继承视为 is-a 关系。在哪个例子里class Student 以 public 形式继承class Person 于是编译器在必要时刻将Students暗自转化为Person.如果此时我们以 private 继承替换 public继承。
class Person {...};
class Student: private Person {...}; // 改用private继承void eat(const Person p);
voide study(const Student s);Person p; // P是人
Student s; // s是学生
eat(p); // 没问题p是人会吃
eat(s); // 错误显然private 继承并不意味着 is-a 关系那意味着什么在这之前我们需要明确 private 继承的意义。
如果class 之间的继承关系是 private, 编译器不会自动将一个 derived class 对象 转换成 基类对象。这和 public 继承的情况不同这也就是为什么通过 s调用 eat 会失败的原因。由private base class 继承而来的所有成员在derived class 中都会变成private 属性纵使他们在base class 原本是protected 或public 属性。
现在可以讨论其显示意义。Private继承意味着 implemented-in-terms-of(根据某物实现出)。如果你让class D 以 private形式继承class B, 你的用意是为了采用 class B 内已经备妥的某些特性不是因为B 对象和D对象存在有任何观念上的关系。
额没有明白 private 的实际意义等用到再说吧。。。。。。