demo_2_review_valuate_compatible_rule_4_attention.cpp

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

CPP
58
字号

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

#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 fun(B *ptr) //普通函数,参数为指向一级派生类B对象的指针
{				
	ptr->display();	//对象指针->成员名
}

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

	fun(&a);       //A::display()
	fun(&b);       //B::display()

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

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

	pA=&b; //A类指针指向B类对象
	fun(pA);       //A::display()
	fun((B *)pA);  //B::display()

	B *pB=&b; //声明B类指针

	fun(pB);       //B::display()
	fun((A *)pB);  //A::display()

	return;
}

⌨️ 快捷键说明

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