メンバー関数のconst位置の違い
1315 ワード
#include <iostream>
using namespace std;
class Vector
{
public:
float x;
float y;
float z;
Vector operator-()
{
return Vector{ -x,-y,-z };
}
const Vector operator+(const Vector& v) const
{
return Vector{ x + v.x, y + v.y, z + v.z };
}
void print()
{
cout << "x : " << x << " y : " << y << " z : " << z << endl;
}
};
int main()
{
Vector v0{ 0, 1, 2 };
Vector v1{ 1, 2, 3 };
Vector v2 = v0 + v1;
Vector v3 = -v1;
v0.print();
v1.print();
v2.print();
v3.print();
}
上記のコードでは、Vectorクラスのoperator+には次の形式があります.const Vector operator+(const Vector& v) const
1.前のconst戻り値を読み取り専用として使用することを示します.
すなわち,参照により値の変形を防止する.
2.パラメータのconst
参照パラメータを変更しない値を示します.
デフォルトでは、各関数はthisをデフォルトで参照します.
void print()
表示void print(Person* this)
は同じです.ここにconstを付けて
void print(const Person* this)
に等しい簡単に言えば、この関数でメンバー変数の値を変更しないことを意味します.
Reference
この問題について(メンバー関数のconst位置の違い), 我々は、より多くの情報をここで見つけました https://velog.io/@hksdods/멤버함수의-const-위치에-따른-차이점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol