gpt4 book ai didi

c++ - 何时声明类(class)成员

转载 作者:行者123 更新时间:2023-11-28 01:00:30 25 4
gpt4 key购买 nike

根据 Bjarne Stroustrup 的说法:

if (and only if) you use an initialized member in away that requires it to be stored as an oject in memory ,the member must be(uniquely) defined somewhere. The initializer may not be repeated.

(C++ 编程语言,第 3 版,第 10.4.6.1 节)

他举了这个例子:

class curious{  
public:
static const int c1=7;
//..
};
const int curious::c1; //necessary

那么为什么有必要定义一个static成员,因为我们可能根本就没有初始化它?

此外,const 和引用成员没有在任何地方声明,即使有必要初始化它们(没有默认构造函数)。

最佳答案

如果你不使用 c1以一种需要将其存储在内存中的方式(例如获取地址等),编译器可以替换所有对 c1 的使用。值为 7 .但是,如果您以需要将其存储在某个地方的方式使用它,那么您必须提供一个定义,以便它存在于某个编译单元中。

成员变量没有在任何地方声明,因为它们在创建对象时就存在于对象内部;每个成员变量都存在于创建的对象中。 static变量存在于任何对象实例之外(也就是说,无论类是否被实例化,静态变量都存在)所以它们需要在某个地方(有时)存在,这独立于特定实例。

关于c++ - 何时声明类(class)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013595/

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