亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

構造函數中這個奇怪的冒號成員(“:”)語法是什么?

構造函數中這個奇怪的冒號成員(“:”)語法是什么?

C++ C C#
湖上湖 2019-05-23 13:24:24
構造函數中這個奇怪的冒號成員(“:”)語法是什最近我見過如下例子:#include <iostream>class Foo {public:   int bar;   Foo(int num): bar(num) {};};int main(void) {   std::cout << Foo(42).bar << std::endl;   return 0;}這奇怪: bar(num)意味著什么?它似乎初始化成員變量,但我以前從未見過這種語法。它看起來像一個函數/構造函數調用,但對于一個int?對我沒有任何意義。也許有人可以啟發我。而且,順便說一下,還有其他類似的深奧語言功能,你永遠不會在一本普通的C ++書中找到它嗎?么?
查看完整描述

3 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

這是一個成員初始化列表。您應該在任何好的C ++書籍中找到有關它的信息。

在大多數情況下,您應該初始化成員初始化列表中的所有成員對象(但是,請注意FAQ條目末尾列出的例外情況)。

FAQ條目的主要內容是,

在所有其他條件相同的情況下,如果使用初始化列表而不是賦值,則代碼將運行得更快。


查看完整回答
反對 回復 2019-05-23
?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

這是構造函數的初始化。這是在類構造函數中初始化成員的正確方法,因為它可以防止調用默認構造函數。

考慮這兩個例子:

// Example 1Foo(Bar b){
   bar = b;}// Example 2Foo(Bar b)
   : bar(b){}

在示例1中:

Bar bar();  // default constructorbar = b;  // assignment

在示例2中:

Bar bar(b) // copy constructor

這完全取決于效率。


查看完整回答
反對 回復 2019-05-23
  • 3 回答
  • 0 關注
  • 864 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號