rnd*_*gen -1 c++ constructor class object segmentation-fault
启动一个类对象我有一个奇怪的问题.这个问题很奇怪,不易再现.但是我会尝试给出一个指示示例.我有继承类.
class BarClass {
public:
BarClass() {
...
}
BarClass(int i, int j) {
...
}
void doSomething() { ... }
};
class FooClass : public BarClass {
public:
FooClass() {
}
FooClass(int i, int j) : BarClass(i,j) {
...
}
};
Run Code Online (Sandbox Code Playgroud)
有时如果我以下面的方式启动对象,我会通过初始化得到分段错误错误.
FooClass foo1;
foo1.doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
Run Code Online (Sandbox Code Playgroud)
如果我使用显式指针new,那就没关系..
FooClass *foo1= new FooClass();
foo1->doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
Run Code Online (Sandbox Code Playgroud)
以下代码将在第2行给出编译器错误.
FooClass foo1();
foo1.doSomething();
FooClass foo2(10, 20);
foo2.doSomething();
Run Code Online (Sandbox Code Playgroud)
我应该如何正确地启动一个对象,特别是当它有默认构造函数和带参数的对象时.
你的上一期首先......
FooClass foo1();
Run Code Online (Sandbox Code Playgroud)
不会创建FooClass类型的对象,但声明一个名为foo1()的函数,该函数不接受任何参数并返回FooClass.删除括号以创建实例,就像在第一个代码示例中一样.
为什么你得到一个segmmentation错误可能与你的析构函数有关,我们看不到,并且这不会在你的第二个漏洞中被调用.