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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++类的使用(二)—— explicit构造与const成员赋值

發布時間:2024/9/30 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++类的使用(二)—— explicit构造与const成员赋值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、代碼實例

class Class { public:Class(int x){_x = x;}int getX(){return _x;}private:int _x; };Class object = 1;

類的定義就不說了,可以參考本序列的第一篇類的使用(一)
關鍵是最后一行Class object = 1;
object的類型明明時Class,怎么可以賦值為1呢?
答案就在代碼第四行Class(int x)
這個構造為單參數構造函數,所以在創建對象時,可以用=來代替()
注意一定時創建對象,不能對已存在的對象進行賦值,比如下面這段代碼就會報錯

Class object; object = 1;

雖然和第一段代碼看上去沒什么區別,但其實本質完全不一樣

二、explicit標識

我們再看一段代碼

class Class { public:explicit Class(int x){_x = x;}int getX(){return _x;}private:int _x; };Class object = 1;

好像沒什么區別嘛,就是在第四行多了一個explicit
其實區別大著呢,這段代碼會報錯,原因就在explicit
explicit在英文中時純凈的意思,在C++中放在構造函數前,指明這個構造函數不能用=代替()
所以explicit通常被用來限制一些間接型的構造函數,而僅允許直接型構造函數使用=,是一種代碼規范

三、const成員賦值

const變量本身不能更改,在類中也是這樣
可是一個類在被創建時總得有個初始值吧,如果成員變量中還有const變量,那怎么才能在構造函數賦值呢?
老規矩,先看代碼

class Class { public:Class(int x):_x(x){}int getX(){return _X;}private:const int _x; };Class object = 1;

只需要在構造函數的聲明后,加上:var(value)就行了
有多個const變量需要初始化用,連接::var1(value1),var2(value2),...
這種方法也可用于普通成員變量的賦值,但只能用于構造函數

本序列的文章:
C++類的使用(一)
C++類的使用(二)—— explicit構造與const成員變量賦值
C++類的使用(三)—— 封裝
C++類的使用(四)—— 繼承
C++類的使用(五)—— 多態
C++類的使用(六)—— 判斷繼承

總結

以上是生活随笔為你收集整理的C++类的使用(二)—— explicit构造与const成员赋值的全部內容,希望文章能夠幫你解決所遇到的問題。

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