派生构造函数警告:永远不会执行

时间:2013-01-11 07:06:00

标签: c++ compiler-warnings

美好的一天,先生和妈妈)

我在使用Code :: Blocks 10.05,FreeBSD 9.1

进行c ++编程时遇到了一些奇怪的问题

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中的来源:

class A{
  public:
    A();
    A(var1, var2);
};
class B : public A{
  public:
    B();
    B(var1, var2);
};

main.cpp中的来源:

#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 ===|

此警告仅在调试模式下出现,发布版本似乎没问题。 代码构建并运行良好,但我做错了什么?

2 个答案:

答案 0 :(得分:3)

lib.h中的构造函数B(var1,var2)是私有的。

答案 1 :(得分:0)

  

警告:永远不会被执行

是GCC的警告,可以使用-Wunreachable-code启用。 -Wunreachable-code非常不可靠,不应该使用;由于这个原因,在较新版本的GCC中完全删除了整个选项。 (实际上,并未完全删除:命令行选项-Wunreachable-code仍然存在,但它不再执行任何操作。)