[疑难] 两个小问题

soulmachine 2007-09-28
1. 除了const,定义常量还有几种方法?

2. C++中的引用,在D中怎么表示?如下C++代码,
int i;
int &j = i;
怎么转换成D?
tomqyp 2007-09-28
2. alias i j;
如果是函数要返回引用类型的话,要么用指针,要么把返回值用类包装一下.
zcpro 2007-09-28
引用和指针本来就是重复的,底层实际都是指针,所以d里没有显式的引用。
oldrev 2007-09-28
1. invariant/const/final 参见 D2.0 文档

2. 对值类型没有显式引用
soulmachine 2007-09-28
alias有时的确像引用。不过我提个更具体的问题吧:
int test(T&); //T是一个类
int test(char&);
如何把这两个函数写成D的形式?
heroboy 2007-09-28
int test(inout T);
int test(inout char);
好像是这样吧
soulmachine 2007-09-28
D中没有sizeof运算符,怎么获得一个类或结构的大小?
D中的new怎么用?比如C++的代码:
T *pt = new T();
怎么改成D的形式?
我只在文档上见过用new分配数组,却没见过分配类。
heroboy 2007-09-28
in D:
class A
{
}
writefln(A.sizeof);
A pa = new A;
oldrev 2007-09-28
这些问题文档里都有记载:

1. 所有类型都有 .sizeof 属性
2. 类是透明引用类型,不需要指针。 T obj = new T;
soulmachine 2007-09-29
谢谢各位!又有问题如下,希望各位解惑:
1. 怎么返回一个引用?
比如C++的函数:
string& copy(void);
该怎么写成D 的形式,我曾试图改成
ref string copy(void);
编译器报错

2.类的成员函数貌似只能在类里面定义,不能象C++可以在类的外面实现,是这样吗?

3.in 象C++的默认传值调用,ref相当于C ++的引用,out比ref多了一点东西,就是在调用函数时out参数都会被设置为默认值,我的理解对否?

to oldrev:
1.invariant/const/final 有什么区别?
2.类是透明引用类型,你的意思是D中对类类型默认是引用的,比如:
int test(T t);//T是一个类
这个函数调用是是用引用的吗?而不是象C++那样的传值调用
Global site tag (gtag.js) - Google Analytics