假设
typedef T* Ptr;
不
Ptr()
做值初始化并保证等于(T *)0?
例如
Ptr p = Ptr();return Ptr();解决方法@H_502_19@ 它是.对于类型T,T()值初始化类型T的“对象”,并产生一个右值表达式.
int a = int();assert(a == 0);
荚级相同:
struct A { int a; };assert(A().a == 0);
对于没有用户声明的构造函数的一些非POD类也是如此:
struct A { ~A() { } int a; };assert(A().a == 0);
因为你不能做A a()(而是创建一个函数声明),boost有一个类value_initialized
,允许解决这个问题,而C 1x将具有以下的替代语法
int a{};
在标准的干燥的话中,这听起来像
The Expression T(),where T is a simple-type-specifIEr (7.1.5.2) for a non-array complete object type or the (possibly cv-qualifIEd) voID type,creates an rvalue of the specifIEd type,which is value-initialized
由于typedef名称是一个类型名称,它是一个简单类型说明符本身,这样做很好.
总结以上是内存溢出为你收集整理的C是否对POD typedef进行初值化?全部内容,希望文章能够帮你解决C是否对POD typedef进行初值化?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)