已采纳回答 / 王大猫
fun2(&s2) 是什么?作者没这么用啊。fun1(&s1) 里面的&s1是传入函数的实参,等于是把子类赋值这父类。下面的图中打叉是因为他把父类对象P1赋值给了子类对象S1
2018-06-24
已采纳回答 / C_can
is a”代表的是类之间的继承关系,“has a”代表的是对象和它的成员的从属关系。c++还有另一种实现has-a关系的途径----私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。使用公有继承,基类的公有方法将成为派生类的公有方法。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不能继承基类的接口。正如从被包含对象...
2017-10-16
已采纳回答 / 慕尼黑2258629
你说的没错,私有继承中,在子类中可以访问父类的保护成员。B类由A类私有派生,那么在B类中可以访问A类的public、protected,但是不能访问A类的private。在B类外,B类对象不能访问A类的成员,只能访问B类的public。C类由B类私有派生,那么C类中不能访问B类的private(其中包含了A类的public、protected),但是可以访问B类的public、protected。在C类外,C类对象只能访问C类的public。
2017-08-12
已采纳回答 / TTshuanger
S.m_strName = "Jim"; 这句话有问题,protected继承后,string m_strName就由public变为protected,所以直接访问就会出错
2017-06-29
已采纳回答 / 慕盖茨4278089
protecd对于类外部来说就相当于private,在soldier类里面的成员函数可以访问play(),但在类的外部就不行,就好像在主程序中不能直接访问soldier里面的成员变量m_iAge(m_iAge也是protected)
2017-04-30