C ++ - .h和.cpp

时间:2011-04-15 09:05:35

标签: c++ class constructor header implementation

如果我的.h文件包含以下内容,例如:

class A
{
...
}

请注意,此处没有自定义构造函数。

现在,在.cpp文件中,我可以编写以下内容:

A
{
...
}

换句话说,在类名之后使用构造函数是否可以 ,如下所示?

A::A()
{
...
}

感谢。

5 个答案:

答案 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; }