既是class基本上都有default constructor,那么为什么那些built-in types
既然class基本上都有default constructor,那么为什么那些built-in types不都弄一个“default constructor”
既然class基本上都有default constructor,那么为什么那些built-in types
不都弄一个“default constructor”呢?这样不就没有了“未初始化”的错误了吗?
[解决办法]
你的想法很对。 面向对象语言,如C#支持这样的特性。
说C++不是完全面向对象的一个原因也是这个。将类型int,double等做成class应该会带来更多的资源消耗。
[解决办法]
ctor只是表达对象生命周期的机制之一,不是OOP的基本特征。一个实现,只要至少满足抽象、封装、模块化和层次结构四个主要特征,就可以称为一个OOP实现,显然C++是满足这些条件的。
[解决办法]C++虽然没有为内置类型显式指定ctor语义,但带有隐含语义,例如zero-initialized。
[解决办法]default ctor 解决不了未初始化的问题。
struct Widget
{
int* p;
};
Widget w;
//w.p的值不能确定
[解决办法]C/C++都是追逐性能的, 没有必要的初始化也是性能损耗, 读数据时自己确保已经写入过的确定的值就可以了。 其设计理论之一: 相信程序员不会犯错误。实际情况是:程序员最容易犯错误。