父类指针可以直接指向子类对象,父类引用可以直接引用子类对象
Posted dxgg-bond
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了父类指针可以直接指向子类对象,父类引用可以直接引用子类对象相关的知识,希望对你有一定的参考价值。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 class parent{ 5 public: 6 int mi; 7 void add(int v){ 8 mi += v; 9 } 10 void add(int a,int b){ 11 mi += (a+b); 12 } 13 }; 14 class child:public parent{ 15 public: 16 int mv; 17 void add(int x,int y,int z){ 18 mv += (x+y+z); 19 } 20 }; 21 int main(){ 22 parent p; 23 child c; 24 p=c;//子类对象对父类对象赋值 25 parent p1(c);//子类对象对父类对象初始化 26 parent& rp = c;//父类引用可以直接引用子类对象 27 parent* pp = &c;//父类指针指向子类对象 28 29 rp.mi = 100; 30 rp.add(5);//并没有发生同名覆盖啊,顺利编译过 31 cout << "rp.mi=" << rp.mi << endl;//105 32 rp.add(10,10);//也没有发生同名覆盖,顺利编译过 33 cout << "rp.mi(10,10)=" << rp.mi << endl;//125 34 35 //pp->mv = 35;//报错!编译不过! 36 //cout << "pp->mv=" << pp->mv << endl;//35 37 //pp->add(5,5,5);//50 38 return 0; 39 40 41 //result: 42 g++ test.cpp 43 [48 22:03#43]$./a.out 44 rp.mi=105 45 rp.mi(10,10)=125;
父子之间的赋值兼容问题:
当使用父类指针(引用)指向子类对象的时候
①子类对象退化为父类对象
②只能访问父类中定义的成员
③可以直接访问被子类覆盖的同名成员
以上是关于父类指针可以直接指向子类对象,父类引用可以直接引用子类对象的主要内容,如果未能解决你的问题,请参考以下文章