C++ 虚函数 1--指向对象的指针 派生类对象赋给基类指针并访问基类成员

80 篇文章 0 订阅
#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
       13-01,02 指向对象的指针
---------------------------------*/
class father
{
public:
	father():age(54)
	{cout<<"调用父类的构造函数并初始化age的值为:"<<age<<endl;}
	~father()
	{cout<<"调用父类的析构函数"<<endl;}
	void jump()const  //不会修改类的成员,用const修饰符
	{cout<<"父亲可以跳五个台阶"<<endl;}
	void run()const  //不会修改类的成员,用const修饰符
	{cout<<"父亲可以跑一万米"<<endl;}
protected:
	int age;
};
class son:public father
{
public:
	son()
	{cout<<"调用子类的构造函数"<<endl;}
	~son()
	{cout<<"调用子类的析构函数"<<endl;}
	void math()
	{cout<<"儿子会数学"<<endl;}
	void jump()const  //不会修改类的成员,用const修饰符
	{cout<<"儿子可以跳五个台阶"<<endl;}
	void run()const  //不会修改类的成员,用const修饰符
	{cout<<"儿子可以跑一万米"<<endl;}
};
int main()
{
	father *p =new son; //--**子类的对象赋给 父类 的指针**---
	               //注意:这里的对象名必须是son,表明是子类class son的对象
	p->jump();
	p->run();
	delete p;  //释放p指向的对象所占用的内存空间,同时对应的析构函数将被调用


	cout<<"-------------------"<<endl;
	son *p2 = new son; //--**子类的对象赋给 子类 的指针**---;指针不能跟上面一样命名为p,
	               //否则,将导致 重定义编译错误
	               //注意:这里的对象名必须是son,表明是子类class son的对象
	p2->jump();
	p2->run();
	p2->math();
	delete p2;
	return 0;
}



运行结果:

调用父类的构造函数并初始化age的值为:54
调用子类的构造函数
父亲可以跳五个台阶
父亲可以跑一万米
调用父类的析构函数
-------------------
调用父类的构造函数并初始化age的值为:54
调用子类的构造函数
儿子可以跳五个台阶
儿子可以跑一万米
儿子会数学
调用子类的析构函数
调用父类的析构函数
Press any key to continue

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值