Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 派生构造函数警告:将永远不会执行_C++_Compiler Warnings - Fatal编程技术网

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

C++ 派生构造函数警告:将永远不会执行,c++,compiler-warnings,C++,Compiler Warnings,早上好,先生们,妈妈们) 我刚刚遇到一些奇怪的问题,而在C++中,使用代码::块10.05,FreeBSD 9.1 < /P> 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::

早上好,先生们,妈妈们)

我刚刚遇到一些奇怪的问题,而在C++中,使用代码::块10.05,FreeBSD 9.1 < /P> 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 ===|
此警告仅在调试模式下出现,发布版本似乎正常。 代码构建和运行良好,但我做错了什么

警告:将永远不会执行


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

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

为什么在.h和.cpp?1中都有类A和类B的定义
B::B(var1,var2):B{/code>这不应该编译。我想你想写
B::B(var1,var2):B(){}
。2) B的构造函数是私有的,这就是为什么
new B
不应该编译太多3)为
var1
var2
添加类型请尝试给出工作示例代码。@VladimirKolesnikov-这很容易出错,但它是有效的。这基本上就是
#include“lib.h”
应该做的。我刚刚错过了lib.h代码中的“public”行,我将B导出为public a,为什么它们应该是private?@Dizzzydozzer:因为默认值是private。当您从A公开派生时,这对B的构造函数的可见性没有影响(因为A中不存在这些构造函数)。您应该从lib.cpp btw中删除B的声明,并保留定义。我看到你已经编辑了你的代码,同样的错误还会出现吗?