程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 的隱式型別轉換

C++ 的隱式型別轉換

編輯:C++入門知識

這段程式竟然可以編譯過,我的老天!

```cpp class Boo { Boo(int c){ cout<<"I’m Boo"; } };

void do_something(Boo b){ // …
}

int main(){ do_something(3); } ```

照字面來理解,函數 dosomething( ) 只能接受型態為 Boo 的參數, 但是 compiler 看見 Boo 的 constructor 後,自動來個隱式轉換,將 dosomething(3); 轉成 do_something(B(3)); ,於是編譯就通過了。C++竟然允許這樣子的事默默發生,我該說是聰明還是骯髒呢?

看見這個特性之後,我才驚覺原來之前這樣子寫可以通過的原因就是ctor隱式轉換

```cpp void foo( string kerker ) { cout<

int main() { foo("KERKER"); } ```

因為foo("KERKER"); 被偷偷轉換為 foo(string("KERKER")); 實際上是這樣子阿,難怪 char* 跟 string 好像無接縫連接了一樣,不過我還是不喜歡這個特性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved