demo_2_review_valuate_compatible_rule_1.cpp

来自「对于一个初涉VC++的人来书」· C++ 代码 · 共 46 行

CPP
46
字号

//***************************************************
// 赋值兼容规则-隐式类型转换
//***************************************************

#include <iostream.h>

class A //基类A声明
{
public:
	void display(){cout<<"A::display()"<<endl;}	
};

class B: public A //公有派生类B声明
{
public:
	void display(){cout<<"B::display()"<<endl;}
};

void fun(A *ptr) //普通函数,参数为指向基类A对象的指针
{				
	ptr->display();	//"对象指针->成员名"
}

void main()	//主函数
{
	A a; //声明A类对象
	B b; //声明B类对象

	A *pA; //声明A类指针

	pA=&a; //A类指针指向A类对象
	fun(pA);

	pA=&b; //A类指针指向B类对象,赋值兼容
	fun(pA); 
	fun((B *)pA); //显式强制类型转换,
	             //但参数传递时赋值兼容隐式类型转换为基类指针

	fun(&b); //参数传递时,赋值兼容

	B *pB=&b;
	fun(pB); //参数传递时,赋值兼容

	return;  //全部执行结构都是:A::display()
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?