【发布时间】:2015-05-08 00:06:27
【问题描述】:
我有一个相当简单的问题,想知道答案是什么。
我的笼统问题: 当你声明一个成员变量时实际发生了什么,无论是公共的还是私有的,以及变量类型的所有排列,例如static vs const vs 常规变量?
class some_class
{
private:
static const std::string str;
public:
...
}
我有点意识到,在 C++ 中没有非变量的概念,也就是说,我被教导相信在 Java 等语言中存在非构造变量。在 Java 中可能也是如此,但这不是我被教导思考事物的方式,所以我试图想出正确的方式来思考这些未初始化的变量。
public class main {
public static void main(String[] args) {
String str; // A kind of non-variable, or non-constructed variable (refers to null).
str = new String(); // Now this variable actually refers to an object rather than null, it is a constructed variable.
}
}
由于 C++ 允许您通过初始化列表初始化构造函数中的成员变量,并且我已通过使用调试器向自己证明,该变量在通过初始化列表初始化之前不存在(显式或默认情况下) ),那么,当你声明成员变量时,实际上在幕后发生了什么?
【问题讨论】: