1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class
Test1 { public : Test1( int
n) { num = n; } //普通構造函數 private : int
num; }; class
Test2 { public : explicit
Test2( int
n) { num = n; } //explicit(顯式)構造函數 private : int
num; }; int
main() { Test1 t1 = 12;
//隱式調用其構造函數, 成功 Test2 t2 = 12;
//編譯錯誤,不能隱式調用其構造函數 Test2 t3(12);
//顯式調用成功 return
0; } |
C++中的關鍵字:explicit
這樣看起來好象很酷, 很方便。 但在某些情況下(見下面權威的例子), 卻違背了我們(程序員)的本意。 這時候就要在這個構造器前面加上explicit修飾, 指定這個構造器只能被明確的調用,使用, 不能作爲類型轉換操作符被隱含的使用。 呵呵, 看來還是光明正大些比較好。
explicit構造函數的作用
解析:
explicit構造函數是用來防止隱式轉換的。請看下面的代碼:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.