一 概念
由于儿子类是从父亲派生出去的,因此儿子类的对象也会继承父亲类的属性和功能(数据和函数),比如说这个儿子叫小明,那么他就是儿子类的一个对象。小明这个儿子继承父亲类的一些属性(矮个)和功能(擅长前空翻),由于它们的关系非常亲密,因此我们可以用指针将他们联系起来:
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 调用子类的构造函数 子类可以跳五个台阶 子类可以跑一万米 儿子会数学 调用子类的析构函数 调用父类的析构函数
|