C++ 過載建構函式
1. 過載建構函式
建構函式也具備了過載的特性。
#include <iostream>
using namespace std;
class rectangle
{
public:
rectangle(){cout<<"構造一個長方形a!\n";}
rectangle(int l,int w){length=l;width=w;cout<<"長方形b的面積為:" <<
length * width <<endl;}
rectangle(int l,int w,int h){length=l;width=w;height=h;cout<<"長方體c的體積為:" <<length*width*height<<endl;}
private:
int length;
int width;
int height;
};
void main()
{
rectangle a;
rectangle b(3,4);
rectangle c(3,4,10);
}
2. 成員變數的初始化
1)對成員變數進行初始化有許多方式,一個是在建構函式體中進行難過初始化。
物件a在構造的同事呼叫建構函式,建構函式通過接收引數將引數傳遞到函式體中,然後又分別賦給私有變數length和width,完成了對成員變數的初始化工作。
2)另外還有一種方式就是在建構函式的函式頭進行初始化。
rectangle () :length(3),width(4){}
在建構函式的右邊有個冒號(:),然後是成員變數的名稱和一對小括號(),小括號中要是初始化的值或者表示式。如果對多個成員進行初始化,那麼要用逗號將他們隔開,最後
一對大括號{},大括號中就是函式索要執行的功能。
//const成員或者引用成員都是不可賦值的,因此只能進行初始化。
#include <iostream>
using namespace std;
class A
{
public:
//A(int a,int b){num=a;total=b;} //錯,不能進行賦值
A(int a,int b):num(a),total(b){}
private:
const int num;
int &total;
};
int main()
{
A a(3,4);
return 0;
}