前言
創建一個對象時,常常需要做某些初始化的工作,例如對數據成員賦值,注意,類的數據成員是不能在聲明類時初始化的
為了解決這個問題,C++編譯器提供了 構造函數 來處理對象的初始化。構造函數是一種特殊的成員函數,與其他成員函數不同,不需要用戶來調用它,而是在建立對象時自動執行。

2、構造函數的分類(三個)
(1)無參構造函數
Test()
{
;
}(2)帶參數構造函數
Test(int a,int b)
{
;
}(3)賦值構造函數
Test(const Test &obj)
{
;
}構造函數的調用
#include <iostream>
using namespace std;
class Test
{
public:
Test() //無參構造函數
{
m_a = 0;
m_b = 0;
cout << "無參構造函數" << endl;
}
Test(int a) //一個參數的有參構造函數
{
m_a = a;
m_b = b;
}
Test(int a,int b) //有參構造函數 //調用有參構造函數有三種方法
{
m_a = a;
m_b = b;
cout << "有參構造函數" << endl;
}
Test(const Test& obj) //賦值構造函數(copy構造函數)
{
cout << "我也是構造函數" << endl;
}
public:
void print()
{
cout << "普通成員函數" << endl;
}
protected:
private:
int m_a;
int m_b;
}
void main()
{
Test t1; //無參構造函數的調用 (對象后什么都不寫)
//有參函數的第一種調用方法 括號法
Test t1(1,2); //調用兩個參數的構造函數
t1.ptint();
//有參函數的第二種調用方法 =號法 (=操作不再是C語言中的功能。C++對= 進行了功能性增強)
Test t2 = (3,4); //調用一個參數的構造函數 因為()號里是逗號表達式,結果為 4;即最后一個數
t2.print();
Test t3 = 4;
t2.print(); //跟 Test t2 = (3,4) 效果是一樣的
//有參函數的第三種調用方法 手動的調用構造函數
Test t4 = Test(1,2); //調用了有兩個參數的構造函數
//直接調用構造函數,會產生匿名對象(涉及到匿名對象的去和留)
cout << "hello" << endl;
}免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。