如果我的.h
文件包含以下内容,例如:
class A
{
...
}
请注意,此处没有自定义构造函数。
现在,在.cpp文件中,我可以编写以下内容:
A
{
...
}
换句话说,在类名之后使用构造函数是否可以 ,如下所示?
A::A()
{
...
}
感谢。
答案 0 :(得分:3)
如果您的问题是您是否可以使用A {}来定义构造函数,不需要,如果要在cpp中定义构造函数,则需要使用A :: A(){...}语法文件。
如果您询问是否不需要构造函数,不,您不一定需要构造函数,编译器将为您提供默认值。
我应该说如果你在类定义中做构造函数,你可以使用A(){...},例如
class A
{
public:
A(){}
};
答案 1 :(得分:2)
我相信你问题的答案是“不”。但这是一个令人困惑的问题。您为.cpp文件的内容提出的语法明显无法编译。
答案 2 :(得分:0)
是否可以在类名
之后使用构造函数随着类变得越来越复杂,混合定义和实现细节使得类更难以管理和使用。
传统上,类定义放在与类同名的头文件中,并且在类外定义的成员函数放在与该类同名的.cpp文件中。
答案 3 :(得分:0)
没有。一旦你定义了类A,编译器希望A
启动
A MyObject;
A MyOtherObject = { /* initial values */ }; // C style since there's no ctor
A MyFunction();
A MyFunction() { return MyObject; }
或者像
这样的变体A* MyPointer;
A& MyReferemce = MyObject;
如您所见,编译器希望您在A
之后声明一些内容。但你有A {
。那是不对的:你开始宣言,但你从未说出你要宣告的内容。
答案 4 :(得分:-3)
是的你可以。如果我理解你的问题。
头文件
#include < iostream> using namespace std; class A{ public: A(); void func(); };
CPP文件
#include "h.hpp"using namespace std;
A::A(){cout << "Constructor" << endl;}int main(){ A a; return 0; }