構造函數的含義和作用,複製構造函數

  構造函數的作用:在對象被創建時利用特定的值構造對象,將對象初始化爲一個特定的狀態。

  構造函數的性質:構造函數的函數名與類名相同,沒有返回值

                               一般存放在公有類型中;

  例:

class people

{

  public:

      people(int page,char pname[]);         //聲明構造函數

  private:

         int age;

       char name[];

};


people::people(int page,char pname[]):age(page),name(pname){}//定義構造函數



   複製構造函數 寫法:類名(類名 &對象名);

 例:

class people

{

  public:

      people(int page,char pname[]);         //聲明構造函數

     people(people &p);             //聲明覆制構造函數

  private:

         int age;

       string name[];

};


people::people(int page,char pname[]):age(page),name(pname){}        //定義構造函數

people::people(people &p)                 //定義複製構造函數

{

age=p.age;

name[]=p.name[];

}

複製構造函數的調用地點:

1.當用類的一個對象去初始化該類的另一個對象

例: 

  people a(17,Mike);

  people b(a);

2.如果函數的形參是類的對象,調用函數時,進行形參和實參結合時

例:

int main()

{

people a(17,MIke);

f(a);

return 0;

}

void f(people j)

{

省略>>>>>>>>>>>>>>>>>

}

3.函數的返回值是類的對象時

類名       函數名(形參)

{

省略》》》》》》》

return  對象名;

}

源文件如下:

#include<iostream>
using namespace std;
class Tree {
public:
int grow(int years);
void age();
Tree(int x)
{
ages = x;
}
Tree(Tree &p);
~Tree() { cout << "析構函數被調用" << endl; }
private:
int ages;
};


Tree::Tree(Tree &p)
{
ages = p.ages;
cout << "複製函數被調用" << endl;
}
int Tree::grow(int years)
{
return  ages+ years;
}
void Tree::age()
{
cout << "put tree's year :\n" << grow(2)<<" years"<< endl;
}
int main()
{
Tree Tree1(4);
Tree Tree2 = Tree1;
Tree2.age();
return 0;
}

發佈了23 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章