#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
C++ 虚函数 1--指向对象的指针 派生类对象赋给基类指针并访问基类成员
最新推荐文章于 2023-03-07 16:35:31 发布