import std.stdio;
class IntegerContainer
{
public int Integer = 1;
}
void DoubleInteger(IntegerContainer Container)
{
Container.Integer *= 2;
}
void main()
{
IntegerContainer Container = new IntegerContainer; // Internal integer defaults to one.
DoubleInteger(Container); // Internal integer changes to two inside the function.
writefln(Container.Integer); // Prints "2."
}
在D中,reference与value是类型的特征,而不是函数参数。来自C++,这对我来说真的很不好。如何通过值传递对象?
看起来好像有一个ref
关键字强制通过引用接受struct
s的功能。按价值传递class
是否有这样的等价物?
例如,假设我想创建一个返回自定义容器类的已排序副本的函数函数。在C++中,这与使用Foo Sorted(Foo Object)
一样简单,而不是Foo Sort(Foo& Object)
。如果没有手动复制对象,我看不出在D中这样做的方法。
即使是类的对象,它仍然是按值传递的,因为它是您传递的参考,按值 – newacct
@newacct我认为每个人都知道“传递值”的含义。 – Maxpm