我有一个像这样的类ssyvector:
class ssyvector {
public :
ssyvector( ssyvector& a);
它有一个构造函数接受对另一个ssyvector的引用。
我进一步定义了一个像这样的运算符
ssyvector operator+(const ssyvector& a,const ssyvector& b)
我尝试将此运算符应用于这样的两个ssyvector:
ssyvector c10000 = s10000+a10000;
然后g ++抱怨说:
main.cpp:31:28: error: no matching function for call to ‘Ssyvector::ssyvector::ssyvector(Ssyvector::ssyvector)’
ssyvector c10000 = s10000+a10000;
^
我可以通过添加" const"来删除此错误。定义构造函数的关键字,如下所示:
class ssyvector {
public :
ssyvector( const ssyvector& a);
看起来很混乱,有人可以解释一下吗? 感谢
答案 0 :(得分:1)
operator+
正在返回一个临时对象。您只能对常量对象进行const引用。
你的构造函数也应该使用const引用,因为制作某个东西的副本不应该改变被复制的东西(除非我们进入量子力学......)