gpt4 book ai didi

c++ - 使一个结构变易变会使它的所有成员变易变吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:00 25 4
gpt4 key购买 nike

如果我有:

struct whatever {
int data;
};<br/>
volatile whatever test;
test.data 也会不稳定吗?

最佳答案

可以问另一个问题(或者只是另一种看待原始问题的方式):

使结构 const 是否使其所有成员都成为 const

如果我有:

struct whatever { int data; };

const whatever test;

test.data 也会是 const 吗?

我的回答是:是的。如果您使用 const 声明类型为 whatever 的对象,那么它的所有成员也将是 const

类似地,如果你用 volatile 声明一个 whatever 类型的对象,那么它的所有成员也将是 volatile ,就像你声明具有const 的对象,它的所有成员也将是const

constvolatile 是同一枚硬币的两个面;它们是如此,以至于标准通常将它们称为 cv-qualifiers


引用自标准 ($7.1.5.1/8)

[Note: volatile is a hint to the implementation to avoid aggressive optimization involving the object because the value of the object might be changed by means undetectable by an implementation. See 1.9 for detailed semantics. In general, the semantics of volatile are intended to be the same in C + + as they are in C. ]

这意味着,如果您的对象是结构的一个实例,那么编译器就无法避免涉及该对象的积极优化除非它避免对每个对象的积极优化成员。 (否则,它如何避免涉及对象的优化?)


相关主题:

Why do we use volatile keyword in C++?

关于c++ - 使一个结构变易变会使它的所有成员变易变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30920170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com