日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++转型构造函数

發布時間:2025/4/5 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++转型构造函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一句話總結:轉換型構造函數就是只有一個參數的構造函數,可以將一些其他類型的變量轉換成類對象。當要阻止這種隱形轉換時,需要在構造函數前面加關鍵字“explicit”;

轉型構造函數用于類型間的轉換,將其它數據類型轉變為類的對象類型。轉型構造函數只有一個參數,如果該參數是int型,則我們是將int型對象轉換為類對象,如果該參數類型為char *類型,我們則是將字符串常量轉換為類對象。

class Age { public:Age(int a){age = a;} private :int age; } class student { public:student(){}student(char * n){name = n;} private :char * name; }

假設我們在程序設計過程中有一個以類對象作為函數參數的函數,函數聲明如下:(隱式轉換

void fun(student s); //函數聲明 char * name = “Harry Potter”; fun(name);

?

我們恰好在student類中定義了這樣一個轉型構造函數student(char * n);,該函數可以將字符串常量轉換為student類的對象。在我們運行fun(name);語句時,編譯器會自動調用轉型構造函數將name轉換為student類的對象,然后調用void fun(student s);函數。這一系列的過程都是編譯器自動完成的,我們稱此時的student類的轉型構造函數student(char * n);支持隱式類型轉換。之所以說是隱式的,是因為這個轉型過程完全由編譯器完成,無需程序設計人員顯示轉換類型。

我們希望直接強制關閉掉這種隱式類型轉換,在C++中,通過關鍵字explicit可以實現該功能。?

class student { public:student(){}explicit student(char * n){name = n;}//阻止隱式轉換 private :char * name; } char * name = “Harry Potter”; fun(name);//這個時候這邊就編譯不通過

注意:

C++提供了關鍵字explicit,可以阻止不應該允許的經過轉換構造函數進行的隱式轉換的發生。聲明為explicit的構造函數不能在隱式轉換中使用。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的C++转型构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。