Qbi*_*bik -1 c++ operator-overloading
我想重载A的'+'运算符,struct但我得到编译器警告这是我的尝试:
struct wektor{
int x;
int y=0;
int norm(){
return x*x+y*y;
}
};
wektor& operator +(wektor &a,wektor &b){
wektor c;
c.x=a.x+b.x; // 12 line - warning here
c.y=a.y+b.y;
return c;
};
Run Code Online (Sandbox Code Playgroud)
编译器警告:
[警告]非静态数据成员初始化程序仅在-std = c ++ 11或-std = gnu ++ 11 [默认情况下启用] 12行中可用
警告告诉你这条线:
int y=0;
Run Code Online (Sandbox Code Playgroud)
在C++ 11之前,您不能在非静态非const成员上使用初始化器.如果要初始化y为0,则必须为wektor成员初始化列表提供构造函数.
尽管如此,您的operator+参数应该是类型const wektor&.它也应该按值返回,因为此时您正在返回对在函数末尾将被销毁的本地对象的引用,这很糟糕.它应该如下所示:
wektor operator +(const wektor &a, const wektor &b){
wektor c;
c.x=a.x+b.x; // 12 line - warning here
c.y=a.y+b.y;
return c;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
133 次 |
| 最近记录: |