首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一下构造函数的复制.

2012-02-14 
请教一下构造函数的复制...以下是我写的一个代码:#include stdafx.hclass operate{int a,bpublic:opera

请教一下构造函数的复制...
以下是我写的一个代码:
#include "stdafx.h"

class operate
{
int a,b;
public:
operate(int x,int y)
{a=x;b=y;}
void print()
{cout<<a<<'+'<<b<<'='<<a+b<<endl;}
operate(operate &a)
{
a=a.a; //A处
b=a.b;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
operate a1(1,2);
operate a2(a1);
operate a3(2,3);
a1.print();
a2.print();
a3.print();
return 0;
}
出现的错误:
(1)error C2679: 二进制“=”: 没有找到接受“int”类型的右操作数的运算符(或没有可接受的转换)(A处)
(2)可能是“operate &operate::operator =(const operate &)”
就是以上这两个错误....
我是根据书本的例子,然后自己再编另外一个不同的,但是就是不知道哪里错了,请指教.....


[解决办法]

C/C++ code
operate(operate &aa)//原来的a和成员变量a重名了{a=aa.a; //A处b=aa.b;}
[解决办法]
原因是a这个名字被你到处乱用,编译器分不清到底各个a对应哪个变量。你为什么用同名的变量导致这么多混淆?
[解决办法]
探讨

原因是a这个名字被你到处乱用,编译器分不清到底各个a对应哪个变量。你为什么用同名的变量导致这么多混淆?

[解决办法]
还是不要用同名的好,要不就必需加上this->
[解决办法]
同名时会出现隐藏
[解决办法]
C/C++ code
#include <iostream>using namespace std;class operate{   int a,b;public:   operate(int x,int y)   {       a=x;b=y;   }   void print()   {       cout<<a<<'+'<<b<<'='<<a+b<<endl;   }   operate(operate &A)   {     a=A.a; //A处     b=A.b;   }};int main(){   operate a1(1,2);   operate a2(a1);   operate a3(2,3);   a1.print();   a2.print();   a3.print();   return 0;}
[解决办法]
探讨
C/C++ code
operate(operate &amp;aa)//原来的a和成员变量a重名了
{
a=aa.a; //A处
b=aa.b;
}

热点排行