? ? ? 在看人家源碼的時候卡住了,看見初始化構造函數的時候看不懂了,構造函數的:,,,這些都是些啥。
糾結了半天,然后各種問各種搜資料,對這個東西理解了一部分了。
? ? ? C++類中成員變量的初始化有兩種方式:
構造函數初始化列表和構造函數體內賦值。下面看看兩種方式有何不同。
~~~
#include "stdafx.h"
#include <string>
using namespace std;
class Company
{
public:
// 構造函數初始化列表賦值
Company(string name,string addr,string boss,int staffCount)
:m_sName(name)
,m_sAddr(addr)
,m_sBoss(boss)
,m_nStaff(staffCount)
{
}
/*// 一般賦值的方法
Company(string name,string addr,string boss,int staffCount)
{
m_sName = name;
m_sAddr = addr;
m_sBoss = boss;
m_nStaff = staffCount;
}*/
private:
string m_sName;
string m_sAddr;
string m_sBoss;
int m_nStaff;
public:
void printInfo()
{
printf("The m_sName is = %s\n",m_sName.c_str());
printf("The m_sAddr is = %s\n",m_sAddr.c_str());
printf("The m_sBoss is = %s\n",m_sBoss.c_str());
printf("The m_nStaff is = %d\n",m_nStaff);
}
};
int main(int argc, _TCHAR* argv[])
{
Company* pComp = new Company("Ghgame","Tianfusoftwarepark","dinghq.alex",80);
pComp->printInfo();
delete pComp;
system("pause");
return 0;
}
~~~
還是看看打印:

通過打印來看初始化還是起到作用的(學程序就是多寫多調試多打印看看結果嘛)。
但是,如果要是有一個子類,繼承了它,子類構造函數的初始化就有點問題了。
~~~
class Subsidiary : public Company
{
public:
/*// 如果這樣寫是不行的,父類Company沒有相同的構造函數
Subsidiary(string name,string addr,string boss,int staffCount,int createDate){};*/
Subsidiary(string name,string addr,string boss,int staffCount,int createDate)
// 必須使用初始化列表增加對父類的初始化
:Company(name,addr,boss,staffCount)
,m_nCreateDate(createDate)
{};
~Subsidiary(){};
private:
// 當子類需要多加自己的參數的時候就要顯式調用父類的構造函數初始化
int m_nCreateDate;
};
~~~
這樣一個子類如果要給父類賦值同時加上自己的m_nCreateDate屬性,構造函數就不能像注釋中那樣用一般的構造函數來賦值了,要用構造函數的初始化列表來賦值。
也只理解到這里。
- 前言
- C++讀取配置文件
- 結構體內存對齊后所占內存空間大小的計算
- do{}while(0)的妙用
- Cocos2dx實現翻牌效果(CCScaleTo與CCOrbitCamera兩種方式)
- C++的error LNK2019: 無法解析的外部符號編譯錯誤
- Java使用JNI調用C++的完整流程
- strupr與strlwr函數的實現
- strcat函數實現
- Windows上VS使用pthread重溫經典多線程賣票(pthreads-w32-2-8-0-release.exe)(windows上使用pthread.h)
- pthread的pthread_join()函數理解實驗
- 順序存儲結構和鏈式存儲結構的選擇
- C語言冒泡排序
- VS看反匯編、寄存器、內存、堆棧調用來學習程序設計
- 快速排序
- C++的構造函數初始化列表
- fatal error C1083: 無法打開包括文件: “SDKDDKVer.h”: No such file or directory
- C++實現簡單的String類