环境:VS2010
代码:
#include <iostream>
using namespace std;
class A
{
public:
A() {
a = 0;
cout<<"A::A()"<<endl;
}
int a;
};
class B:public A
{
public:
B() {
i=1;
cout<<"B::B()"<<endl;
}
int i;
};
class C:public A
{
public:
C() {
m=2;
cout<<"C::C()"<<endl;
}
void Print(){
cout<<a<<", "<<m<<endl;
}
public:
int m;
};
int main(void){
C c1;
C c2;
c2.a = 111;
c2.m = 222;
A *pa1 = &c1;
A *pa2 = &c2;
*pa1 = *pa2;
c1.Print();
c2.Print();
return 0;
}
读者可以先考虑输出结果。
运行效果截图:
分析:
A *pa1 = &c1; A *pa2 = &c2;*pa1 = *pa2; 这三句话表示类c2赋值给c1,因为C从A继承,所以c2赋值给c1后A的属性发生了修改,但它c1本身的内容不会因此发生改变,所以第一句输出是111(c2的a赋值给c1的a),2(c1的m).第二句打印相信大家都清楚,这里不赘述。
注:这里类B是多余的,不用考虑。(误导)
总结:当派生类之间之间进行赋值的时候,只会改变基类的内容,因为派生类是从基类继承的,而本身的不会因此改变,仍保留。
分享到:
相关推荐
主要介绍了C#中派生类调用基类构造函数用法,实例分析了派生类调用基类构造函数的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
主要介绍了深入解析C++中派生类的构造函数,是C++入门学习中的基础知识,需要的朋友可以参考下
下面小编就为大家带来一篇浅谈C++中派生类对象的内存布局。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了解析C++中派生的概念以及派生类成员的访问属性,是C++入门学习中的基础知识,需要的朋友可以参考下
1 、先定义一个学生类student,其私有成员分别为(学号、生名、性别)3个,再定义一个研究生类graduate(私有成员分别为:学号、生名、性别、年龄、地址)5个。其中研究生类从学生类继承过来,分别采用公有继承与私有...
(2)、声明一个shap(形状)基类,他有两个派生类:Circle(圆)和square(正方形),要求(1)根据给出的正方形中心坐标计算圆的面积,(2)根据给出的正方形中点坐标和一个顶点坐标计算出该正方形面积。
1 、先定义一个学生类student,其私有成员分别为(学号、生名、性别)3个,再定义一个研究生类graduate(私有成员分别为:学号、生名、性别、年龄、地址)5个。其中研究生类从学生类继承过来,分别采用公有继承与私有...
在继承关系中,已有的、设计好的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的公有成员,但是不能继承其私有成员。如果需要在派生类中调用基类的方法,可以使用内置函数super()或者通过...
⑸从Graduate类和Teacher类派生出助教生类TA,无新的属性。设计该类时注意虚基类的使用,注意重载相应的成员函数。 二、要求: 1.用多文件方式编程(建立工程),共有6个类(6个cpp,6个h),加上main,共13个文件 2...
⑸从Graduate类和Teacher类派生出助教生类TA,无新的属性。设计该类时注意虚基类的使用,注意重载相应的成员函数。 ⑹编写main函数测试这些类。在main函数中设计测试用例时,注意考虑如何体现成员函数的覆盖。 编程...
从student类中派生出graduate(研究生)类,添加属性:专业,导师(为教师类); 添加[取得教师]方法(返回值为teacher类) (3) 对People类重载”==”运算符和”=”运算符,”==”运算符判断两个People类对象...
由Person类派生出学生类Student和教师类Teacher,并为他们添加必要的数据,为这两个派生类编写必要的构造函数和析构函数。然后编写一个主函数对以上功能进行测试。 包括了很多的程序可供您参考!
从circle类中派生出sphere类和column类,在两个派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的表面积及体积。 第二题:设计任务 程序设计题:定义一个复数类,通过重载运算符, 直接实现两个复数...
(5)从student类中派生出研究生(graduate)类,添加属性:专业 char subject[21]、导师 teacher_adviser; (6)从graduate类和teacher 类派生TA(助教)类,注意使用虚基类; (7)实现学生选课管理系统。...
C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。同时,由于是Microsoft公司的产品,它又同 VB一样简单。对于web开发而言,C#像 Java,同时具有Delphi的一些优点。C#...