c++ 派生类向基类转换的可访问性
对于c++面向对象一直很疑惑,这次决定下功夫把它弄明白 一、派生类和基类之间的类型转换
首先理解,派生类含有基类的所有成分,只不过有些就算在派生类的成员函数也不能访问而已。 (1)派生类和基类的自动转换只针对指针或引用类型。
只有指针和引用支持自动类型转换,同时,也只有指针和引用才可以静态类型和动态类型不同,这两个配合就完成了c++的最重要的多态。
派生类到基类的自动类型转换也不是都能随便转换的。 1.如果派生类以public继承基类,则是is
a关系,用派生类可以完成基类的所有功能,所以可以在任意地方将派生类自动转换成基类,注意,这里都是指指针或引用,而不是对象。 比如:class A{};
class B:public A{} B b;void function(const A &);
就可以使用function(b),会默认把B类型转换成A类型。 (2)不存在从基类到派生类的隐式类型转换,注意是隐式。 (3)在对象之间不存在类型转换。