派生类中的复制构造函数(P214)


/*

复制构造函数:
对于一个类,如果程序中没有定义复制构造函数,则编译器会自动生成一个隐含的复制构造函数,这个隐含的复制构造函数会自动调用基类的复制构造函数,对派生类新增的成员对象一一执行复制。

*/

#include<iostream>
using namespace std;

class A
{
public:
A() //默认构造函数
{
i = 100;
cout << "类A默认构造函数" << endl;
}
A(const A&s) //复制构造函数
{
i = s.i;
cout << "类A复制构造函数" << endl;
}
int getValue(); //取值
void setValue(int); //设置值
private:
int i;
};

int A::getValue()
{
return i;
}

void A::setValue(int k)
{
i = k;
}

class B :public A //公有派生类
{
private:
float f;
public:
B()
{
f = 20.1;
cout << "类B默认构造函数" << endl;
}
B(const B &v) :A::A(v), f(v.f)
{
cout << "类B复制构造函数" << endl;
}
float getValue();
int getValue1()
{
return A::getValue();
}
};

float B::getValue() //重写基类函数,改变了返回值类型
{
return f;
}

int main()
{
A a; //调用类A默认构造函数
B b; //调用类A默认构造函数、类B默认构造函数
B bb(b); //调用类A复制构造函数、类B复制构造函数
system("pause");
return 0;
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM