C++ 運算符重載是一種強大的功能,它允許你為自定義類型(如類或結(jié)構(gòu)體)定義運算符的行為。為了使運算符重載更加便捷,你可以遵循以下建議:
class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
MyClass operator+(const MyClass& other) const {
return MyClass(value + other.value);
}
};
class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
};
MyClass operator+(const MyClass& lhs, const MyClass& rhs) {
return MyClass(lhs.value + rhs.value);
}
+
和 -
。為了實現(xiàn)這一點,你可以重載運算符運算符,即 operatoroperator()
。例如:class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
MyClass operator+(const MyClass& other) const {
return MyClass(value + other.value);
}
MyClass operator-(const MyClass& other) const {
return MyClass(value - other.value);
}
};
MyClass operator+(const MyClass& lhs, const MyClass& rhs) {
return lhs + rhs;
}
auto
關(guān)鍵字:在 C++11 及更高版本中,你可以使用 auto
關(guān)鍵字來簡化復(fù)雜的類型推導(dǎo)。例如:auto result = my_object1 + my_object2;
constexpr
關(guān)鍵字:如果可能的話,將運算符重載函數(shù)聲明為 constexpr
,這樣它們可以在編譯時計算。這可以提高性能,并使代碼更安全。例如:class MyClass {
public:
int value;
constexpr MyClass(int v) : value(v) {}
constexpr MyClass operator+(const MyClass& other) const {
return MyClass(value + other.value);
}
};
decltype
關(guān)鍵字:decltype
可以幫助你推導(dǎo)出表達(dá)式的類型,從而使運算符重載函數(shù)更簡潔。例如:class MyClass {
public:
int value;
MyClass(int v) : value(v) {}
MyClass operator+(const MyClass& other) const {
return MyClass(value + other.value);
}
};
decltype(auto) operator+(const MyClass& lhs, const MyClass& rhs) {
return lhs + rhs;
}
遵循這些建議,可以使你的 C++ 運算符重載更加便捷、高效和易于維護(hù)。