首页 > 代码库 > 内建类型零初始化的问题
内建类型零初始化的问题
比如有如下这样一段代码,我们很快就能意识到,x 和ptr开始的值都是未定义的,但是sc却很明显会调用其默认构造函数,得到合理的初始化。
class someclass{
public:
someclass():val(){}
private:
int val;
}
void foo(){
int x;
int *ptr;
someclass sc;
......
}
在C++中,处理基础类型(int, bool, float, double, 指针类型等)跟处理类类型还是有一定差别的。基础类型并不存在所谓的默认构造函数用于初始化。
在模板编程中,可以采用如下的方案,使得即使对于内置类型,也可以得到合适的初始化,整型初始化成0,指针类型也初始化成0。
template <typename T> void foo() { T x = T(); // x is zero (or false)ifT is a built-in type }
template <typename T> class MyClass { private: T x; public: MyClass() : x() { // ensures that x is initialized even for built-in types } … };
内建类型零初始化的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。