2011-05-06 110 views
1

我是C++的新手,我還沒有看到這種構造函數,它是做什麼的?關於C++構造函數的問題

class A { 
    int x; 
public: 
    A(int xx):x(xx) {} 
}; 

int main() { 
    A a(10); 
    A b(5); 
    return 0; 
} 

上面的代碼是否有效?
這個構造函數是做什麼的? A(int xx):x(xx)是什麼意思?演員?

+0

改變其在構造函​​數體值更有效開始閱讀了堅實的入門書,如從柯尼希&武加速C++ – 2011-05-06 19:33:15

+0

你可以在這裏找到不錯的入門書籍的列表:HTTP://計算器。com/questions/388242/the-definitive-c-book-guide-and-list – 2011-05-06 19:53:46

+0

構造函數只是創建用戶定義對象 – 2011-05-06 20:52:21

回答

4

是上面的代碼有效嗎?

是的。

這個構造函數是做什麼的? A(int xx):x(xx)是什麼意思?

這就是所謂的初始化列表,其副本xx的類成員x

+0

的唯一方法,您可以將它想象爲使用值xx調用成員x的「構造函數」 。 – buc 2011-05-06 18:52:47

0

這被稱爲初始化列表。當構造函數被調用時,私有變量x將用xx初始化。

2

:之後和身體(空括號)之前的東西是初始值列表。它用xx初始化成員變量x

從C++ FAQ中查看本節:http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6

+0

+1鏈接。我實際上正在尋找一個解釋**初始化列表**的線程,但徒勞無功。我想,一旦我看到它精心解釋。 – Mahesh 2011-05-06 18:59:11

0

這是一個帶初始值設定項的構造函數。

x(xx)的初始化x,其中的xx

0

A(int xx) : x(xx)的值初始化爲xx值的數據成員x

0

該代碼有效:成員變量「x」正在「基本/成員初始值設定項列表」中設置一個值。

當您初始化引用成員,常量成員的值或將參數轉發給基礎構造函數時,需要此類初始化。

這是在其他情況下可選的,像這樣的,其中值可能已明確在構造函數體設置(但是這可以說是更快,因爲它是作爲分配內存初始化)。

1

字符串:x(xx)被稱爲初始值設定項。正如你可以看到它僅在構造函數中有效。效果是用值xx初始化x。所以,你的代碼使兩個A的對象 - 一個擁有10的X和其他的5

這是不是讓被初始化,然後通過寫入x=xx;