我无法弄清楚这一点。我试图重新创建“复杂”的C++类和这些功能。什么时候使用const函数之前,当你不应该
例如:real(), imag(), abs()
等使用参数const complex& obj
。所以我认为如果你通过引用传递对象,它不会被复制并保存一些内存,速度更快,并且在它前面使用const
以避免弄乱该对象。我对吗? 所以我认为我可以创建类似这些功能,但为什么那些具有参数const
的函数需要是const
才能使用它们自己? 这里是我的了:
class MyComplex{
private:
double real;
double imag;
public:
MyComplex();
MyComplex(int real);
MyComplex(int real, int imag);
double getReal();
double getImag();
void setReal(int real);
void setImag(int imag);
friend const double real(const MyComplex& obj);
friend const double imag(const MyComplex& obj);
friend const double abs(const MyComplex& obj);
friend const double arg(const MyComplex& obj);
friend const double norm(const MyComplex& obj);
friend const std::string conj(const MyComplex& obj);
friend std::string myPolar(double rho, double theta);
};
如果我不把常量在他们面前,他们不工作。
const double real(const MyComplex& obj){
return obj.real;
}
其他功能非常相似。
它基本上意味着你正在返回const double,所以你不能写入它(除非你从值afaik复制) – Creris 2014-10-27 20:54:39
顺便说一下,这些函数不是'const'限定的,返回值是。对于被const限定的函数,它将被声明为'... double real(...)const;'在最后用'const'声明。 – clcto 2014-10-27 20:56:14
@clcto:...它甚至不是非成员函数的有效签名。 – 2014-10-27 20:58:38