[疑难] 对象传值怎么做?

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 这些本来都应该放到标准库里成为语言的一部分的
Global site tag (gtag.js) - Google Analytics