C++中,公开型成员变量如果没有初始化,缺省值是多少
时间: 2024-10-27 16:05:07 浏览: 16
对象数组初始化-C++东南大学何洁月课件(总)
在C++中,如果公开型成员变量(即非静态数据成员)没有在类体中显式初始化,其缺省值取决于该类型的特性。对于基本类型(如int、char等),它们通常初始化为零;对于指针和引用,它们初始化为nullptr(NULL);对于复合类型(如结构、类),它们可能依赖于具体实现,但通常是未定义状态。
然而,对于const修饰的成员变量,即使没有显式初始化,也会有一个默认值。比如,在引用`Base`类的例子中[^2],`kDefaultB`由于被声明为`const int`且没有初始化列表,它的初始值会被设置为`kDefaultA`的除以二的结果,即50(因为`kDefaultA`为100)。
要演示这个情况,你可以创建一个简单的类并尝试访问未初始化的成员变量:
```cpp
class MyClass {
public:
// 默认值示例,假设int没有初始化则为0
int myInt;
// 对于const成员,它会有一个默认值
const int myConst = 0;
};
MyClass obj;
std::cout << "myInt (default): " << obj.myInt << std::endl; // 可能是0,也可能未定义
std::cout << "myConst (default): " << obj.myConst << std::endl; // 总是0,无论是否初始化列表
```
阅读全文