C是否对POD typedef进行初值化?

C是否对POD typedef进行初值化?,第1张

概述C对简单的 POD typedef进行初值化? 假设 typedef T* Ptr; 不 Ptr() 做值初始化并保证等于(T *)0? 例如 Ptr p = Ptr();return Ptr(); 它是.对于类型T,T()值初始化类型T的“对象”,并产生一个右值表达式. int a = int();assert(a == 0); 荚级相同: struct A { int a; };asse C对简单的 POD typedef进行初值化?

假设

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进行初值化?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1253702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存