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

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

C++為什么只有直接訪問表達(dá)的函數(shù)才成為成員

本篇內(nèi)容主要講解“C++為什么只有直接訪問表達(dá)的函數(shù)才成為成員”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“C++為什么只有直接訪問表達(dá)的函數(shù)才成為成員”吧!

10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有蒼溪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

C.4:只有直接訪問表達(dá)的函數(shù),才應(yīng)該成為成員。

Reason(原因)

和使用成員函數(shù)相比普通函數(shù)耦合性略低,一方面可以通過修改對(duì)象狀態(tài)帶來麻煩的函數(shù)會(huì)變少,另一方面可以減少改變類表達(dá)時(shí)需要修改的函數(shù)的數(shù)量。

Example(示例)

class Date {    // ... relatively small interface ...};
// helper functions:Date next_weekday(Date);
bool operator==(Date, Date);

The "helper functions" have no need for direct access to the representation of a Date.

“幫助函數(shù)”沒有需求要直接訪問Data的表達(dá)。

Note(注意)

This rule becomes even better if C++ gets "uniform function call".

如果C++可以導(dǎo)入“統(tǒng)一函數(shù)調(diào)用”這條準(zhǔn)則甚至?xí)兊酶昝馈?/p>

譯者注:“uniform funcation call”是C++之父本人提出的C++語法建議。核心是對(duì)于一個(gè)形如f(x,y)的函數(shù)調(diào)用,如果不存在函數(shù)f(x,y),可以轉(zhuǎn)而調(diào)用x.f(y)。有了這個(gè)語法,編寫非成員幫助函數(shù)的靈活性將會(huì)進(jìn)一步加大。

Exception(例外)

(C++)語言要求虛函數(shù)必須是成員,而且不是所有的虛函數(shù)都會(huì)直接訪問數(shù)據(jù)。通常抽象類的成員很少直接訪問數(shù)據(jù)。

Note multi-methods.

Exception(類外)

The language requires operators =, (), [], and -> to be members.

語言要求=,(),[]和->運(yùn)算符作為成員存在。

Exception(列外)

An overload set may have some members that do not directly access private data:

一組重載函數(shù)中也許會(huì)有某個(gè)成員不會(huì)直接訪問私有數(shù)據(jù)。

class Foobar {public:    void foo(long x)    { /* manipulate private data */ }    void foo(double x) { foo(std::lround(x)); }    // ...private:    // ...};

Exception(例外)

Similarly, a set of functions may be designed to be used in a chain:

類似地,一組函數(shù)可能被設(shè)計(jì)用來串聯(lián)使用。

x.scale(0.5).rotate(45).set_color(Color::red);

Typically, some but not all of such functions directly access private data.

通常,有些但不是所有這樣的函數(shù)都會(huì)直接訪問私有數(shù)據(jù)

Enforcement(實(shí)施建議)

  • Look for non-virtual member functions that do not touch data members directly. The snag is that many member functions that do not need to touch data members directly do.

    尋找沒有直接接觸數(shù)據(jù)成員的非虛成員函數(shù)。諷刺的是存在許多不需要直 接訪問數(shù)據(jù)成員的成員函數(shù)。

  • Ignore virtual functions.

    忽略虛函數(shù)。

  • Ignore functions that are part of an overload set out of which at least one function accesses private members.

       如果一組重載函數(shù)中至少有一個(gè)函數(shù)訪問了私有成員,那么忽略其他函數(shù)。

  • Ignore functions returning this.

    忽略返回this指針的函數(shù)。

到此,相信大家對(duì)“C++為什么只有直接訪問表達(dá)的函數(shù)才成為成員”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站欄目:C++為什么只有直接訪問表達(dá)的函數(shù)才成為成員
本文URL:http://weahome.cn/article/pcigci.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部