国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++ 必須在類初始化列表中初始化的幾種情況

2019-11-08 03:09:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. 類成員為const類型

2. 類成員為引用類型

復(fù)制代碼
#include <iostream>using namespace std;class A{    public:        A(int &v) : i(v), p(v), j(v) {}        void PRint_val() { cout << "hello:" << i << "  " << j << endl;}    private:        const int i;        int p;        int &j;};int main(int argc ,char **argv){    int pp = 45;    A b(pp);    b.print_val();}復(fù)制代碼

究其因

const對(duì)象或引用只能初始化但是不能賦值。構(gòu)造函數(shù)的函數(shù)體內(nèi)只能做賦值而不是初始化,因此初始化const對(duì)象或引用的唯一機(jī)會(huì)是構(gòu)造函數(shù)函數(shù)體之前的初始化列表中。

從無(wú)到有叫初始化,初始化(調(diào)用拷貝構(gòu)造函數(shù))創(chuàng)建了新對(duì)象;賦值(調(diào)用賦值操作符)沒(méi)有創(chuàng)建新對(duì)象,而是對(duì)已有的對(duì)象賦值。

 

3. 類成員為沒(méi)有默認(rèn)構(gòu)造函數(shù)的類類型

復(fù)制代碼
#include <iostream>using namespace std;class Base{    public:        Base(int a) : val(a) {}    private:        int val;};class A{    public:        A(int v) : p(v), b(v) {}        void print_val() { cout << "hello:" << p << endl;}    private:        int p;        Base b;};int main(int argc ,char **argv){    int pp = 45;    A b(pp);    b.print_val();}復(fù)制代碼

原因同樣是創(chuàng)建對(duì)象時(shí),要初始類成員的每一個(gè)成員

 

4. 如果類存在繼承關(guān)系,派生類必須在其初始化列表中調(diào)用基類的構(gòu)造函數(shù)

復(fù)制代碼
#include <iostream>using namespace std;class Base{    public:        Base(int a) : val(a) {}    private:        int val;};class A : public Base{    public:        A(int v) : p(v), Base(v) {}        void print_val() { cout << "hello:" << p << endl;}    private:        int p;};int main(int argc ,char **argv){    int pp = 45;    A b(pp);    b.print_val();}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 渑池县| 巩留县| 汝阳县| 滦平县| 安吉县| 山东省| 留坝县| 白银市| 澄城县| 江西省| 克山县| 甘谷县| 安平县| 都江堰市| 巍山| 琼结县| 鹤山市| 商南县| 宝鸡市| 寿阳县| 恩平市| 望江县| 扎兰屯市| 诏安县| 呼和浩特市| 元谋县| 九龙县| 靖安县| 望城县| 枞阳县| 洪湖市| 左贡县| 稷山县| 赣州市| 连平县| 青神县| 阜新市| 南宫市| 新津县| 福州市| 张掖市|