派生類中的復制構造函數(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