⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 只有public继承可以使派生类转换为基类.txt

📁 里面的代码是自己写的,参考书是thingking in c++,代码有详细的说明,对学习c++语法非常有帮助!
💻 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 + -