1. 程式人生 > >C++ 過載建構函式

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;
}