[疑难] 对象传值怎么做?
player7
2007-05-05
对象的赋值都是引用方式,怎么样才能传值过去呢?
AAA a= new AAA; AAA b= a; |
|
qiezi
2007-05-05
这个还真不知道呢,好像并没有提供对象拷贝的方法,还是推荐构造吧,拷贝本身是深拷贝还是浅拷贝还得由使用者来决定。如果你把对象只当成值来用,改用struct就可以了。
|
|
player7
2007-05-05
那么像这样的代码安全不安全呢?我从C++里抄来的。
AAA a= new AAA; AAA b= new AAA(a); class AAA{ this(){}; this(AAA p){ memcpy(cast(void*)this, cast(void*)p, AAA.sizeof); } int x=1; } |
|
oldrev
2007-05-05
player7 写道 那么像这样的代码安全不安全呢?我从C++里抄来的。
AAA a= new AAA; AAA b= new AAA(a); class AAA{ this(){}; this(AAA p){ memcpy(cast(void*)this, cast(void*)p, AAA.sizeof); } int x=1; } 不安全,OO的做法是添加一个 AAA clone() 方法,或者从一个 interface ICloneable { Object clone(); } 继承一个 clone() 方法 |
|
oldrev
2007-05-05
像 ICloneable, INoncopyable 这些本来都应该放到标准库里成为语言的一部分的
|