按照經(jīng)驗,設(shè)計一個類時需要對成員變量進行初始化。C++提供了兩種初始化成員變量的途徑,讓程序員有了一些的選擇空間。同時,這也給程序員留下了坑。
初始化類成員變量的途徑:
據(jù)此,設(shè)計以下代碼:
#includeusing namespace std::literals;
std::string generate_name_1()
{std::cout<< "Calling generate_name_1() ..."<< std::endl;
return "Alex"s;
}
std::string generate_name_2()
{std::cout<< "Calling generate_name_2() ..."<< std::endl;
return "Brant"s;
}
std::string generate_name_3()
{std::cout<< "Calling generate_name_3() ..."<< std::endl;
return "Chris"s;
}
class person_1
{public:
person_1() = default;
std::string name() const {return m_name; }
private:
std::string m_name{generate_name_1() };
};
class person_2
{public:
person_2() :m_name{generate_name_2() } {}
std::string name() const {return m_name; }
private:
std::string m_name;
};
class person_3
{public:
person_3() :m_name{generate_name_2() } {}
std::string name() const {return m_name; }
private:
std::string m_name{generate_name_1() };
};
class person_4
{public:
person_4() :m_name{generate_name_2() }
{m_name = generate_name_3();
}
std::string name() const {return m_name; }
private:
std::string m_name{generate_name_1() };
};
int main()
{std::cout<< "===== class person_1 ====="<< std::endl;
person_1 person1;
std::cout<< person1.name()<< std::endl;
std::cout<< std::endl;
std::cout<< "===== class person_2 ====="<< std::endl;
person_2 person2;
std::cout<< person2.name()<< std::endl;
std::cout<< std::endl;
std::cout<< "===== class person_3 ====="<< std::endl;
person_3 person3;
std::cout<< person3.name()<< std::endl;
std::cout<< std::endl;
std::cout<< "===== class person_4 ====="<< std::endl;
person_4 person4;
std::cout<< person4.name()<< std::endl;
std::cout<< std::endl;
return EXIT_SUCCESS;
}
上述代碼的運行結(jié)果如下:
===== class person_1 =====
Calling generate_name_1() ...
Alex
===== class person_2 =====
Calling generate_name_2() ...
Brant
===== class person_3 =====
Calling generate_name_2() ...
Brant
===== class person_4 =====
Calling generate_name_2() ...
Calling generate_name_3() ...
Chris
我們看到:
總的來說就是:賦值會覆蓋初始化值,初始化成員列表中的初始化會覆蓋定義成員變量時的初始化。
總結(jié)你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
本文題目:[編程語言][C++]類成員變量初始化之坑-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article48/ceehep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、服務(wù)器托管、軟件開發(fā)、動態(tài)網(wǎng)站、外貿(mào)建站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容