您好,登錄后才能下訂單哦!
本篇內(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í)!
免責(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)容。