D语言中自定义类型的深入探索
在软件开发中,类、基本类型和函数是构建软件的常用元素。然而,仅依靠类并不能满足所有的抽象需求,比如处理细粒度对象、作用域资源和值类型时,类就显得力不从心。D语言提供了除类之外的多种自定义类型,如结构体(structs)、联合(unions)、枚举(enums)、别名(alias)等,下面我们将详细介绍这些类型。
结构体(structs)
结构体允许定义简单的、封装的值类型,类似于 int 类型。与类不同,结构体具有值语义,没有动态多态性、函数重写、继承和无限生命周期。
定义结构体
定义结构体与定义类类似,但有一些区别:
struct Widget {
// 常量
enum fudgeFactor = 0.2;
// 共享的不可变值
static immutable defaultName = "A Widget";
// 每个Widget对象分配的状态
string name = defaultName;
uint width, height;
// 静态方法
static double howFudgy() {
return fudgeFactor;
}
// 方法
void changeName(string another) {
name = another;
}
}
复制语义
结构体和类在复制行为上有很大差异。结构体的复制是
超级会员免费看
订阅专栏 解锁全文
1831

被折叠的 条评论
为什么被折叠?



