为什么不调用构造函数

autohawk 2008-10-28 01:44:10
#include <iostream>
using namespace std;
class A
{
int i,j;
public:
A(){cout<<"A()"<<endl;}
A(int a,int b){i=a;j=b;cout<<"A(int,int)"<<endl;}
A(A & a)
{
i = a.i;
j = a.j;
cout<<"A(A&a)"<<i<<""<<j<<endl;
}
friend A operator + (A a,A b);
};

A operator+ (A a,A b)
{
return A(a.i+ b.i,a.j+b.j);
}

int main()

{
return 0;
}

编译报错,error: no matching function for call to 'A::A(A)'
操作符重载时为什么不自动调用A的构造函数?
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
autohawk 2008-10-28
  • 打赏
  • 举报
回复
明白明白了,我自己的问题,MMD,文件保存为.C的了
autohawk 2008-10-28
  • 打赏
  • 举报
回复
大哥们,要动手测试,我用的是gcc,当然我代码有问题。
这样吧,改为如下:
#include <iostream>
using namespace std;
class A
{
int i,j;
public:
A(){cout<<"A()"<<endl;}
A(int a,int b){i=a;j=b;cout<<"A(int,int)"<<endl;}
A(A & a)
{
i = a.i;
j = a.j;
cout<<"A(A&a)"<<i<<""<<j<<endl;
}
};
friend A operator + (A& a,A& b);
A operator+ (A& a,A& b)
{
/*
A temp(1,1);
return temp;//这样正常
*/
return A(1,1);//这样不行,why?
}

int main()

{
A(1,1);
return 0;
}
我看你有戏 2008-10-28
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
class A
{
int i,j;
public:
A(){cout <<"A()" <<endl;}
A(int a,int b){i=a;j=b;cout <<"A(int,int)" <<endl;}
A(A & a)
{
i = a.i;
j = a.j;
cout <<"A(A&a)" <<i <<"" <<j <<endl;
}
friend A operator + (A a,A b);
};

A operator+ (A a,A b)
{
return A(a.i+ b.i,a.j+b.j);
}

int main()

{
return 0;
}

nickshen_qidian 2008-10-28
  • 打赏
  • 举报
回复
2楼正解!
太乙 2008-10-28
  • 打赏
  • 举报
回复

//lz用的是vc6.0吧??这是微软的一个欠佳的地方!!头文件换换就行了
#include <iostream.h>
//using namespace std;
class A
{
int i,j;
public:
A(){cout <<"A()" <<endl;}
A(int a,int b){i=a;j=b;cout <<"A(int,int)" <<endl;}
A(A & a)
{
i = a.i;
j = a.j;
cout <<"A(A&a)" <<i <<"" <<j <<endl;
}
friend A operator+(const A& a,const A& b);
};

A operator+(const A& a,const A& b)
{
return A(a.i+ b.i,a.j+b.j);
}

int main()

{
return 0;
}



xhs_lh04 2008-10-28
  • 打赏
  • 举报
回复
A operator+ (A &a,A &b)

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧