溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2021-11-25 16:05:38 來源:億速云 閱讀:96 作者:iii 欄目:大數(shù)據(jù)

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

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

Reason(原因)

和使用成員函數(shù)相比普通函數(shù)耦合性略低,一方面可以通過修改對象狀態(tài)帶來麻煩的函數(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的表達。

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++語法建議。核心是對于一個形如f(x,y)的函數(shù)調(diào)用,如果不存在函數(shù)f(x,y),可以轉(zhuǎn)而調(diào)用x.f(y)。有了這個語法,編寫非成員幫助函數(shù)的靈活性將會進一步加大。

Exception(例外)

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

Note multi-methods.

Exception(類外)

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

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

Exception(列外)

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

一組重載函數(shù)中也許會有某個成員不會直接訪問私有數(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è)計用來串聯(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ù)都會直接訪問私有數(shù)據(jù)

Enforcement(實施建議)

  • 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ù)中至少有一個函數(shù)訪問了私有成員,那么忽略其他函數(shù)。

  • Ignore functions returning this.

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

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

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

c++
AI