D语言模块源文件同模块是一一对应的
D 不再“包含”带有声明的文件的文本,而是“导入”该模块
不用担心多次导入一个模块,也不用再把头文件用 #ifndef/#endif 或者 #pragma once 包起来了
声明 vs 定义C++ 的函数和类通常需要声明两次——声明位于 .h 头文件中,定义位于 .c源文件中
这个过程易于出错而且冗长繁琐
显然,应该只需要程序员编写一次,而由编译器提取出声明信息并将它导入到符号表中
这正是 D 所做的
示例:class ABC { int func() { return 7; } static int z = 7; } int q;不再需要单独定义成员函数、静态成员、外部声明之类的,也不需要像这样烦人的语法:int ABC::func() { return 7; } int ABC::z = 7; extern int q;注记:当然,在 C++ 中,琐碎的函数如 { return 7; } 也可以直接写在声明处,但是复杂的函数就不行了(uframer:虽然从语法上说依然是可以的,但会违反 C++ 接口和实现分离的原则
)
另外,如果有前向引用的话,就必须保证已经声明了被引用的那个函数一个原型
下面的代码在 C++ 中是不合法的:class Foo { int foo(Bar *c) { return c->bar; } }; class Bar { public: int bar() { return 3; } };但是等价的 D 代码就可以正常工作:class Foo { int foo(Bar c) { return c.bar; } } class Bar { int bar() { return 3; } }D 函数是否被在线化取决于优化程序的设置
模板D 模板提供了一种提供范型编程和偏特化能力的简洁的方法
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。