gpt4 book ai didi

c++ - 在哪里可以在 C++ 中声明变量?

转载 作者:搜寻专家 更新时间:2023-10-31 01:12:01 26 4
gpt4 key购买 nike

我正在阅读 C++ 常见问题解答。在第 16 章,使用静态它说:

"a const static data member is declared in the class and is normally defined (and initialized) in a source file, such as a .cpp file. But in some cases it can be initialized in the class body proper."

然后继续提到可以在何处声明整型和非整型(尽管我认为这对于 C++11 中的整型有所改变)。

我的问题是,以上是否只适用于 const 静态数据成员而不适用于非 const 静态数据成员?

我开始真的很困惑,不明白为什么会有这些限制? volatile、mutable 和其他关键字变量是否有这些规则?人们如何才能轻松学会这一点(除了 24/7 全天候编程之外)?

最佳答案

C++ 2011 在声明 变量方面没有任何改变!但是,您可以初始化类定义主体中的所有成员变量。构造对象时,类定义中声明的值就是默认使用的值。但是,如果成员初始化器列表提及成员,则初始化器列表优先。

静态数据成员一般需要定义。但是,staticconst 成员可能会在类主体中进行声明和初始化:如果成员未绑定(bind)到引用或其地址被占用,声明就足够了,您不需要提供定义。但是,如果您获取地址,它仍然需要定义。

以下是如何设置成员初始化默认值的几个示例:

class foo
{
private:
int i{5};
int j = 6;
std::vector<int> v{ 1, 2, 3, 4 };
std::vector<int> w = std::vector<int>(2, 10);
std::vector<int> z = decltype(z)(2, 10);

// ...
};

请注意,使用括号不起作用。因此,可能有必要使用上面最后两种形式中的一种。

关于c++ - 在哪里可以在 C++ 中声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14147994/

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