相关疑难解决方法(0)

964
推荐指数
5
解决办法
11万
查看次数

167
推荐指数
4
解决办法
7万
查看次数

C++类成员的默认值是什么

结构成员和c ++中类成员的默认值是什么,以及这些规则如何不同(例如,类/结构/基元/等之间)?是否存在有关默认值的规则不同的情况?

c++ struct class default-value

51
推荐指数
2
解决办法
3万
查看次数

C++中的变量初始化

我的理解是int变量将0自动初始化; 但事实并非如此.下面的代码打印一个随机值.

int main () 
{   
    int a[10];
    int i;
    cout << i << endl;
    for(int i = 0; i < 10; i++)
        cout << a[i] << " ";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
  • 什么规则(如果有的话)适用于初始化?
  • 具体来说,在什么条件下变量自动初始化?

c++ variables initialization

42
推荐指数
3
解决办法
6万
查看次数

"if(pointer)delete ponter"即使没有初始化指针也会删除

我写了一个非常小的Observeable实现.当观察者注册时,它会删除旧观察者并启动新观察者.但是,即使它尚未初始化,它也会尝试删除指针.代码如下:

Observable.h

class Observable
{
public:
    Observable();
    virtual void registerObserver(Observer * O);
    virtual ~Observable();

protected:
    Observer * myObserver;
};
Run Code Online (Sandbox Code Playgroud)

Observable.cpp

#include "Observable.h"

Observable::Observable()
{
}


Observable::~Observable()
{
    if(myObserver)
        delete myObserver;
}

void Observable::registerObserver(Observer * O)
{
    if(myObserver)
        delete myObserver;
    myObserver=O;
}
Run Code Online (Sandbox Code Playgroud)

所有主要做的是

GUI * gui = new GUI();      // GUI extends Observer
Model * m = new Model();    //Model extends Observable
m->registerObserver(gui);   //I get a segfault inside this call
Run Code Online (Sandbox Code Playgroud)

如果我单步执行registerObserver,我会看到即使我从未初始化myObserver,语句if(myObserver)的计算结果为true.这导致未初始化的指针被删除并且出现seg错误. …

c++ qt pointers segmentation-fault

2
推荐指数
1
解决办法
282
查看次数