相关疑难解决方法(0)

C++:成员指针初始化?

代码示例应该解释一下:

class A
{
    B* pB;
    C* pC;
    D d;

    public : 
    A(int i, int j) : d(j)
    {
        pC = new C(i, "abc");
    } // note pB is not initialised, e.g. pB(NULL)

    ...
};
Run Code Online (Sandbox Code Playgroud)

显然,pB应该明确地初始化为NULL以保证安全(并且清晰),但是,就目前而言,构建A之后pB的值是多少?是否默认初始化(为零?)或不是(即不确定和内存中的任何内容).我意识到C++中的初始化有一些规则.

我认为它不是默认初始化的; 在Visual Studio中以调试模式运行时,它已将pB设置为指向0xcdcdcdcd - 这意味着内存已经新(在堆上)但未初始化.但是在释放模式下,pB始终指向NULL.这只是偶然的,因此不能依赖; 或者这些编译器是否为我初始化(即使它不在标准中)?在Solaris上使用Sun编译器编译时,它似乎也是NULL.

我真的在寻找标准的具体参考来说明这种或那种方式.

谢谢.

c++ pointers default

10
推荐指数
1
解决办法
3372
查看次数

标签 统计

c++ ×1

default ×1

pointers ×1