我知道你可以使两个对象相等时,当其中一个正在申报。我在我的程序中测试了这个。但是当我去使用赋值语句时,它吓坏了。你能用一个赋值语句使两个对象相等吗?或者只有当一个对象被声明时才能这样做?使一个对象等于另一个对象
2
A
回答
7
你已经提供operator =给一个类,以便复制另一个对象的内容。例如:
class A
{
public:
//Default constructor
A();
//Copy constructor
A(const A&);
//Assignment operator
A& operator=(const A& a);
};
int main()
{
A a; //Invokes default constructor
A b(a); //Invokes copy constructor;
A c;
c = a; //Invokes assignment operator
}
2
重载该对象的赋值运算符可以帮助您。 (我希望你在谈论同一类的对象:))
0
对于赋值运算符只是根据您的类实现的重载赋值运算符。
-1
此答案适用于C#。
随着Overloading =运算符,您还应该覆盖equals方法。您也应该检查Guidelines超载运输equals()和运营商==
public struct Complex
{
double re, im;
public override bool Equals(Object obj)
{
return obj is Complex && this == (Complex)obj;
}
public override int GetHashCode()
{
return re.GetHashCode()^im.GetHashCode();
}
public static bool operator ==(Complex x, Complex y)
{
return x.re == y.re && x.im == y.im;
}
public static bool operator !=(Complex x, Complex y)
{
return !(x == y);
}
}
0
的对象可能需要初始化或创建或等同于另一个对象的时候,对象是依赖于其他对象。
在这种情况下,复制构造函数提供了最佳解决方案。因为它不会将对象逐个复制到其他对象。如果将内存动态分配给对象,则按位复制会产生问题。因此,解决方案是定义类中的copy_constructor。复制构造函数引用与其参数相同类型的现有对象,并用它从现有对象创建新对象。下面是一个examplet使用拷贝构造函数等同于其他对象的对象..
#include "stdafx.h"
#include "iostream"
using namespace std;
class array
{
int *ptr;
int size;
public:
array (int sz) {
ptr = new int [sz];
size =sz;
for(int index=0;index<size;index++)
ptr[index]=size;
}
~array(){
delete[] ptr;
}
array(array &a) {
int index;
ptr=new int[a.size];
for(index=0;index<a.size;index++)
ptr[index]=a.ptr[index];
cout<<"copy_constructor invoked"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
array num(10);
array x(num); //invokes copy_constructor
array y=num; //invokes copy consturctor
return 0;
}
+0
一些如何,代码是不能逐行插入..我不知道 – Red 2009-09-15 00:12:30
相关问题
- 1. Java - 等于另一个对象的对象的行为
- 2. 的C++ 0x:当一个临时对象等于另一个临时对象
- 3. 如何在JavaScript中创建一个等于另一个对象的对象unbound
- 4. 设置一个等于另一个特定对象的新对象
- 5. 使另一个对象的父对象
- 6. 使用JavaScript验证一个对象与另一个对象
- 7. 添加对象到另一个对象,它是在另一个对象
- 8. 对象实例化另一个对象?
- 9. 拥有另一个对象的对象
- 10. 另一个对象的访问对象
- 11. 另一个对象内的JavaScript对象
- 12. 从另一个对象创建对象
- 13. 使用Javascript中的赋值运算符设置一个对象等于另一个对象
- 14. JAVA OOP从一个对象转移到另一个对象
- 15. Angular-2:将一个对象复制到另一个对象
- 16. 在另一个COM对象内创建一个COM对象
- 17. AngularJS将一个对象映射到另一个对象
- 18. 构造一个新的对象()与另一个对象
- 19. 如何改变一个对象是另一个对象
- 20. 分配一个对象的值在另一个对象
- 21. 悬停在一个对象上以转换另一个对象
- 22. 如何将一个对象数组放入另一个对象?
- 23. Javascript应用方法从一个对象到另一个对象
- 24. 指定一个对象到另一个对象Javascript
- 25. 在LINQ中更新一个对象与另一个对象
- 26. Java中一个对象与另一个对象的弱关联?
- 27. 从另一个对象分配一个对象属性
- 28. 从一个片段发送对象到另一个对象
- 29. 循环通过一个对象,并在另一个对象
- 30. 将一个对象复制到另一个对象
但是你可以使用赋值(C = A)没有超载=操作 – 2009-09-14 08:50:02
是的,这就是为什么我写了两个不同的语句 – Naveen 2009-09-14 08:54:03
@艾哈迈德说:如果你没有明确定义一个,那么编译器自动为你生成一个。 – 2009-09-14 16:48:03