你好,先生們和MAMS)派生構造函數警告:永遠不會被執行
我剛剛拿到了一些奇怪的問題,同時proging C++,使用代碼:: Blocks的10.05,FreeBSD的9.1
來源lib.cpp:
class A{
public:
A();
A(var1, var2);
};
A::A(){ imlementation }
A::A(va1, var2) {implementation }
class B : public A{
public:
B();
B(var1, var2);
};
B::B() : A() {} // this is Astr#
B::B(var1, var2) : A(var1, var2) {} // this is Bstr#
來源lib.h:在main.cpp中
class A{
public:
A();
A(var1, var2);
};
class B : public A{
public:
B();
B(var1, var2);
};
來源:
#include "lib.h"
...
int main(){
...
B* Bptr = new B();
B* Bptr2 = new B(var1, var2);
...
}
而且我得到這些構建警告:
.../lib.cpp||In constructor 'B::B(var1, var2)':
.../lib.cpp|Bstr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B(var1, var2)':
.../lib.cpp|Bstr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B()':
.../lib.cpp|Astr#|warning: will never be executed
.../lib.cpp||In constructor 'B::B()':
.../lib.cpp|Astr#|warning: will never be executed
||=== Build finished: 0 errors, 4 warnings ===|
這個警告只出現在調試模式下,發佈版本似乎去確定。 該代碼構建並運行良好,但我做錯了什麼?
爲什麼在.h和.cpp中都有類A和類B的定義? –
1)'B :: B(var1,var2):B {}'這不應該被編譯。我想你想寫'B :: B(var1,var2):B(){}'。 2)B的構造函數是私有的,這就是爲什麼'new B'不應該被編譯3)爲'var1'和'var2'添加類型 – borisbn
請嘗試給出工作示例代碼。 – mkluwe