CPP学习之——指向对象的指针(13.1)

一 概念

由于儿子类是从父亲派生出去的,因此儿子类的对象也会继承父亲类的属性和功能(数据和函数),比如说这个儿子叫小明,那么他就是儿子类的一个对象。小明这个儿子继承父亲类的一些属性(矮个)和功能(擅长前空翻),由于它们的关系非常亲密,因此我们可以用指针将他们联系起来:

1
father *pfather=new son;

二 对象指针

  • 由于在堆中创建的对象都是匿名的,因此创建的时候必须用类名来创建,而且要访问它们必须用指针,堆的概念在数组里还有详细的讲解
  • 该段语句的意思是在堆上创建一个新的son对象,并且返回指向该对象的指针,而赋值操作符=又将该指针赋给指向father的指针。这样的好处是son对象可以直接访问father的数据和函数。

三 示例演示及结果输出

3.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
using namespace std;
class father
{
protected:int age;
public:
father():age(54){cout<<"调用父类的 构造函数并初始化age的值为:"<<age<<endl;}
~father(){cout<<"调用父类的析构函数"<<endl;}
void jump()const{cout<<"父亲可以跳五个台阶"<<endl;}
void run()const{cout<<"父亲可以跑一万米"<<endl;}
};
class son:public father
{
public:
son(){cout<<"调用子类的构造函数"<<endl;}
~son(){cout<<"调用子类的析构函数"<<endl;}
void jump()const{cout<<"子类可以跳10个台阶"<<endl;}
void run()const{cout<<"子类可以跑10万米"<<endl;}
void math()const{cout<<"儿子会数学"<<endl;}
};
int main()
{
// father *p=new son;
// p->jump();
// p->run();
son *s=new son;
s->jump();
s->run();
s->math();
delete s;
return 0;
}

3.2 输出结果

1
2
3
4
5
6
7
调用父类的 构造函数并初始化age的值为:54
调用子类的构造函数
子类可以跳五个台阶
子类可以跑一万米
儿子会数学
调用子类的析构函数
调用父类的析构函数