C++运算符重载的一个问题,运算符重载函数和拷贝函数不能同时存在,编辑器报错 30
#include<iostream>#include<cmath>#include<iomanip>#include<cstring>#include<string>us...
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<string>
using namespace std;
class com
{
public:
com(int xx=0) {x=xx;}
com(com &); //拷贝构造函数
com operator + (com a);//运算符重载函数
int get() {return x;}
private:
int x;
};
com::com(com &p)
{
x=p.x;
}
com com:: operator +(com a)
{
return com(get()+a.get());//运行后这行报错no matching function call to‘com::com(com)’
}
int main()
{
com b(12),c(5);
com a;
a=(b+c);
cout <<a.get()<<endl;
}
把拷贝构造函数去除,程序就运行无误 展开
#include<cmath>
#include<iomanip>
#include<cstring>
#include<string>
using namespace std;
class com
{
public:
com(int xx=0) {x=xx;}
com(com &); //拷贝构造函数
com operator + (com a);//运算符重载函数
int get() {return x;}
private:
int x;
};
com::com(com &p)
{
x=p.x;
}
com com:: operator +(com a)
{
return com(get()+a.get());//运行后这行报错no matching function call to‘com::com(com)’
}
int main()
{
com b(12),c(5);
com a;
a=(b+c);
cout <<a.get()<<endl;
}
把拷贝构造函数去除,程序就运行无误 展开
3个回答
展开全部
嗯哪我帮你修改,私聊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似::后面多了一个空格!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询