真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

教你如何優(yōu)雅地拒絕自作多情的C++

教你如何優(yōu)雅地拒絕自作多情的C++一個(gè)含義中立的行為,放在不同的人眼里,就有不一樣的解釋。就像你幫學(xué)妹打開水,如果她喜歡你,那你就是冬天里溫柔貼心的暖男,如果她不喜歡你,那你就是路邊上自作多情的逗比。

創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的興安盟烏蘭浩特網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

教你如何優(yōu)雅地拒絕自作多情的C++

類比到C++中,他會(huì)你不知情的情況下,自動(dòng)為你準(zhǔn)備好①無(wú)參構(gòu)造函數(shù)、空析構(gòu)函數(shù)、復(fù)制構(gòu)造函數(shù)、賦值操作符函數(shù)等一系列基本類成員方法。你說他這是一種溫柔貼心呢,還是一種自作多情呢?

這沒有標(biāo)準(zhǔn)答案,事情的好壞取決于你所設(shè)計(jì)的類的需要。在大部分情況下,以上自動(dòng)生成的類成員方法都是必不可少的,它們提供了一個(gè)類對(duì)象最起碼的特性。但在一些特別的時(shí)候,它們卻是我們想要擺脫的東西。

比如,你設(shè)計(jì)一個(gè)用來表達(dá)一個(gè)學(xué)生的類,如下

class student

{

    int ID;  // ×××

    string name; // 姓名

    char *data; // 其他信息

};

假如,我們認(rèn)為以上四類自動(dòng)生成的類方法都是自作多情,那么我們來看看都怎么躲避并拒絕這些路邊的逗比。

首先我們認(rèn)為任何一個(gè)學(xué)生對(duì)象,都必須有ID和name,因此在定義學(xué)生對(duì)象的時(shí)候我們就要拒絕C++自作多情地自動(dòng)生成①無(wú)參構(gòu)造函數(shù),這很簡(jiǎn)單,我們只需要定義任意版本的類構(gòu)造函數(shù),就可以優(yōu)雅地拒絕。


通過定義一個(gè)構(gòu)造函數(shù)來優(yōu)雅地拒絕C++自動(dòng)生成的①無(wú)參構(gòu)造函數(shù)

student::student(const int &id, const string &name)

{

    ID = id;

    this->name = name;

    data = new char[100];

}

其次我們認(rèn)為任何一個(gè)學(xué)生對(duì)象在退出其作用域時(shí),都應(yīng)該釋放其所持有的資源,因此跟構(gòu)造函數(shù)類似,我們可以通過自定義一個(gè)析構(gòu)函數(shù),來拒絕系統(tǒng)自動(dòng)生成的②空析構(gòu)函數(shù)。


通過自定義析構(gòu)函數(shù)來優(yōu)雅地拒絕C++自動(dòng)生成的②空析構(gòu)函數(shù)

student::~student( )

{

    delete [ ] data;

}


再次,我們不希望使用一個(gè)學(xué)生來初始化另一個(gè)學(xué)生,也不希望兩個(gè)學(xué)生對(duì)象的直接賦值,畢竟,沒有任何兩個(gè)人是一模一樣的(就算是同卵雙胞胎我們認(rèn)為也不行),換句話說我們希望以下代碼不合法

student Jack(1234, "Jack");

student Rose(Jack);

student Mike = Jack; 

仔細(xì)分析一下上面的代碼,Rose(Jack)實(shí)際上是調(diào)用了Rose的默認(rèn)拷貝構(gòu)造函數(shù),Mike = Jack實(shí)際上是調(diào)用了Mike的默認(rèn)賦值操作符函數(shù),emmmm... ... 假如,我們將這兩個(gè)逗比函數(shù)設(shè)置為私有private,那會(huì)怎樣?沒錯(cuò)!這樣的話以上代碼就不合法了,look:


通過private權(quán)限來優(yōu)雅地拒絕C++自動(dòng)生成③復(fù)制構(gòu)造函數(shù)和④賦值操作符函數(shù)

class student

{

    ... ...

private:

    student(const student &);

    student &operator=(const student &);

};

以上妙計(jì),可不是林世霖我發(fā)明的土辦法,實(shí)際上這是C++官方標(biāo)準(zhǔn)和Boost庫(kù)通用的技巧,更進(jìn)一步,我們可以定義一個(gè)專門包含private拷貝構(gòu)造函數(shù)和private賦值操作符函數(shù)的特定類Uncopyable,并將之成為所有需要拒絕這些默認(rèn)類成員方法的類的基類。

一個(gè)將③復(fù)制構(gòu)造函數(shù)和④賦值操作符函數(shù)封印在private權(quán)限內(nèi)部的神奇的基類

class Uncopyable

{

protected:

    Uncopyable(); // 允許派生類調(diào)用構(gòu)造函數(shù)

    ~Uncopyable();

private:

    Uncopyable(const Uncopyable &);  // 阻止派生類

    Uncopyable &operator=(const Uncopyable &);

};

接下來,我們只需要讓student類繼承Uncopyable即可

class student : public Uncopyable

{

    ... ...

};

至此!我們就完美地拒絕了自作多情了C++啦!哦耶!

噓!聽說識(shí)別下面二維碼進(jìn)入 微店●秘籍酷 能上天遁地,不信你試試!


教你如何優(yōu)雅地拒絕自作多情的C++

教你如何優(yōu)雅地拒絕自作多情的C++

微信原文:https://mp.weixin.qq.com/s?__biz=MzAxNzYzMTU0Ng==&mid=2651289178&idx=1&sn=9cbdc8745705bc3d3eb711bb94ba72f3&chksm=8011460fb766cf1946651e3fff0fd68edb2a6c9fca9070e576dc5f2e9b2b19b95918cfe47605#rd


網(wǎng)頁(yè)名稱:教你如何優(yōu)雅地拒絕自作多情的C++
標(biāo)題鏈接:http://weahome.cn/article/poiicg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部