protected专门就是为继承(子类)设计的用public继承,基类所有的访问标识在子类不变,protected还是protected。外界想要访问保护成员,必须通过public方法间接访问。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。例如,假设类包含保护成员,则这样的成员在派生类中是可用的,但在继承层次机构外是不可用的。派生类可以重新定义虚函数,但包含类不能。
C++中,类的protected究竟有什么作用?
protected专门就是为继承(子类)设计的 用public继承,基类所有的访问标识在子类不变, protected还是protected 。C++编程思想中是这么说的,public意味着随后的定义对所有人都适用;private意味着除了该类型的创建者和该类型的内部成员函数之外,任何人都无法访问这些定义;而protected是继承的类可以访问protected的成员,但不能访问private的成员。
保护成员在派生类内相当于私有成员吗?
保护成员只有其所属类和派生类可以直接访问,不管在基类还是派生类中都一样。外界想要访问保护成员,必须通过public方法间接访问。C++对象访问私有数据成员问题
1、在友元函数内部,能否通过“类对象.私有数据成员”的形式访问类中私有数据成员?这个是可以的,友元函数就是为了访问私有数据成员才存在的
2、在成员函数内部,能否通过“类对象.私有数据成员”的形式访问类中私有数据成员?
成员函数本来就可以访问私有数据成员,不明白你这说的类对象是指什么,如果指的是*this的话,也有这种用法,因为局部变量可能和类成员变量同名,这时候可以用this->对象名来访问
还有问题hi我
C++ 程序设计中Is-a和has-a
一、类包含对象这种关系的实现无非就是一个类是另外一个类的成员而已。
Class A
{
B b;
.......
}
其实这就是一个最简单的has-a的关系的实现。
二.、私有继承
c++还有另一种实现has-a关系的途径----私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。
使用公有继承,基类的公有方法将成为派生类的公有方法。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不能继承基类的接口。正如从被包含对象中看到的,这种不完全继承是has-a关系的一部分。
因此私有继承提供的特性与包含相同:获得实现,但不获得接口。所以,私有继承也可以用来实现has-a关系。
三、使用包含还是私有继承
由于既可以使用包含,也可以使用私有继承来建立has-a关系。大多数c++程序员倾向于前者。不过私有继承所提供的特性确实比包含多。例如,假设类包含保护成员,则这样的成员在派生类中是可用的,但在继承层次机构外是不可用的。如果使用组合奖这样的类保护在另一类中,则后者将不是排成类,而是位于继承层次结构之外,因此不能访问保护成员。但通过继承的到的将是派生类,因此他能够访问保护成员。
另一种需要使用私有继承的情况是需要重新定义虚函数。派生类可以重新定义虚函数,但包含类不能。使用私有继承,重新定义的函数将只能在类中使用,而不是公有的。