class Cents
{
private:
int m_nCents;
public:
Cents(int nCents) { m_nCents = nCents; }
// Overload cCents + int
friend Cents operator+(const Cents &cCents, int nCents);
int GetCents() { return m_nCents; }
};
// note: this function is not a member function!
Cents operator+(const Cents &cCents, int nCents)
{
return Cents(cCents.m_nCents + nCents);
}
int main()
{
Cents c1 = Cents(4) + 6;
std::cout << "I have " << c1.GetCents() << " cents." << std::endl;
return 0;
}
表現の仕方がよくわからない
Cents(4)+6
列をなして
Cents c1 = Cents(4) + 6;
評価されます。ええ、Cents 型と int 型のオペランドに対してそれぞれ演算子「+」をオーバーロードしていることはわかっています。
私が理解しているように、 Censt(4) はコンストラクターですよね?そうするとき
Cents operator+(const Cents &cCents, int nCents)
{
return Cents(cCents.m_nCents + nCents);
}
cCenst は Cents(4) への参照になりますか?
ラインから
return Cents(cCents.m_nCents + nCents);
メンバー選択演算子 "." を介して m_nCents にアクセスするため、cCenst は Censt 型のオブジェクトであると推測できます。ただし、Censt(4) はコンストラクターであり、クラス オブジェクトではありません。
私には、cCenst が Cents(4) への参照であることは意味がないように思えます。それらは同等ではないからです。