Kid*_*des 3 c++ windows operator-overloading
Test.h:
class Test {
private:
int value;
public:
Test();
int getValue();
void setValue(int value);
bool operator >(Test &l) {
if (value > l.value) {
return true;
}
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
这会导致任何问题吗?如果是,将它实现到cpp文件的正确方法是什么?如果我试图将它实现为一个cpp文件,我会得到一个错误,说明参数的数量(因为该函数现在不在类中?).
我会说这是一个很简单的函数,这是理想的方法,因为它允许编译器内联它们,消除函数开销.
但你应该尽可能使函数const.
所以:
class Test {
private:
int value;
public:
Test();
int getValue();
void setValue(int value);
bool operator >(const Test &l) const { // be const correct!
if (value > l.value) {
return true;
}
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
该函数根本不修改数据成员,所以我已经标记了它const.参数也没有改变,所以我也标记了const.
如果您确实希望将其实现为单独的cpp文件,则需要使用类名限定它:
Test.h
class Test {
private:
int value;
public:
Test();
int getValue();
void setValue(int value);
bool operator >(const Test &l) const; // declare only
};
Run Code Online (Sandbox Code Playgroud)
TEST.CPP
// Qualify the name with Test::
bool Test::operator >(const Test &l) const { // be const correct!
if (value > l.value) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用以下功能更简洁:
// Qualify the name with Test::
bool Test::operator >(const Test &l) const { // be const correct!
return value > l.value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5777 次 |
| 最近记录: |