📄 只有public继承可以使派生类转换为基类.txt
字号:
*本实验程序书上没有,我只是想测试一下。
见c++primer 3/e P800,只有public 继承是满足is-a子类型机制的,即是说明:派生类是基类的子类型。
但是其他继承方式就不是这种关系。
*/
#include <iostream>
using namespace std;
class A {
private:
int _a;
public:
A(int a=0) { _a = a;}
int GetA() const { return _a;}
};
class B: public A {
private:
int _b;
public:
B() { _b = 0;}
B( int b ){ _b = b;}
};
void f( A &a){}
void ff( A a){}
void main()
{
B b;
A a = b; //当继承方式为 private 或是 protected的时候 error C2243: “类型转换” : 从“B *__w64 ”到“const A &”的转换存在,但无法访问
B bb;
a=bb; //当继承方式为 private 或是 protected的时候 error C2243: “类型转换” : 从“B *__w64 ”到“const A &”的转换存在,但无法访问
f(bb); // 当继承方式为 private 或是 protected的时候 error C2243: “类型转换” : 从“B *__w64 ”到“A &”的转换存在,但无法访问
ff(bb); // 当继承方式为 private 或是 protected的时候 error C2243: “类型转换” : 从“B *__w64 ”到“const A &”的转换存在,但无法访问
//当继承方式为公有继承的时候,以上都正确。
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -