基类与派生类对象的关系
来源:互联网 发布:格子衬衫 知乎 编辑:程序博客网 时间:2024/06/06 12:10
•基类对象与派生类对象之间存在赋值相容性。包括以下几种情况:
–把派生类对象赋值给基类对象。
–把派生类对象的地址赋值给基类指针。
–用派生类对象初始化基类对象的引用。
•反之则不行,即不能把基类对象赋值给派生类对象;不能把基类对象的地址赋值给派生类对象的指针;也不能把基类对象作为派生对象的引用。
#include <iostream>
using namespace std;class A {
int a;
public:
void setA(int x){ a=x; }
int getA(){ return a;}
};
class B:public A{
int b;
public:
void setB(int x){ b=x; }
int getB(){ return b;}
};
void f1(A a, int x){ a.setA(x); }
void f2(A *pA, int x){ pA->setA(x); }
void f3(A &rA, int x){ rA.setA(x); }
void main(){
A a1,*pA;
B b1,*pB;
a1.setA(1);
b1.setA(2);
a1=b1;
cout<<a1.getA()<<endl;
cout<<b1.getA()<<endl;
a1.setA(10);
cout<<a1.getA()<<endl;
cout<<b1.getA()<<endl;
pA=&b1;
pA->setA(20);
cout<<pA->getA()<<endl; cout<<b1.getA()<<endl; A &ra=b1;
ra.setA(30);
cout<<pA->getA()<<endl;
cout<<b1.getA()<<endl; b1.setA(7);
cout<<b1.getA()<<endl; f1(b1,100);
cout<<b1.getA()<<endl; f2(&b1,200);
cout<<b1.getA()<<endl; f3(b1,300);
cout<<b1.getA()<<endl;}
- 基类对象与派生类对象的使用关系
- 基类与派生类对象的关系
- 基类与派生类对象的关系
- 派生类与基类的关系
- 基类与派生类的关系
- C++-继承:基类与派生类对象的关系&&继承与组合
- 关于基类与派生类之间对象、指针等转化关系的小结
- 关于基类与派生类之间对象、指针等转化关系的小结
- 基类指针、派生类指针与他们的关系
- 基类指针、派生类指针与他们的关系
- 派生类与基类的转换关系
- C++-继承:基类与派生类的关系
- 基类对象和派生类对象之间的赋值关系
- 派生类和基类的关系
- 基类和派生类的关系
- 派生类与派生类对象对基类成员的访问
- 派生类与基类之间的对象模型
- 派生类与基类之间的对象模型
- 官方Android源码编译提示
- Oracle 左连接,右连接,全连接,sql实例
- 语音识别 TTS
- Aspose.Cells教学视频
- 代码中执行apk安装、卸载、更新以及静默安装
- 基类与派生类对象的关系
- matlab中自定义文件名和系统自带文件名重复的处理
- 老调重弹:年龄大了,码农何去何从
- TreeCtrl控件,选择根节点时子节点同时被选的代码
- Parsley开发指南 5 解耦绑定
- Project configuration is not up-to-date with pom.xm
- 回车与换行 ASCII
- C#语法糖(Csharp Syntactic sugar)大汇总
- http://www.12306ng.org/forum.php