0

我的问题一定很简单,但我找不到正确的方法将具有初始化成员的构造函数拆分为 .h 和 .cpp (定义和实现)文件。

如果,比如说,我有:

    class Class {

    public: 
    Class (int num, float fl ... ) : _num(num), _fl(fl) {}
    ...

    private:
    int _num;
    float _fl;

    };

如何在 .cpp 文件中实现构造函数?如果在成员初始化之后(在头文件中)我放了分号 - 编译器会抱怨。如果我保留 { },.cpp 文件将重新定义构造函数,这也是错误的。当然,我可以明确地写下定义。所以.h文件是:

    Class (int num, float fl ... );

和 .cpp :

    Class (int num, float fl ... ) {
    _num = num; 
    _fl = fl;
    }

但是有没有办法将成员初始化保留在头文件中?提前致谢!另外,在专业编码中,什么是首选?

4

2 回答 2

4

您需要在 .cpp 中有成员 init 和构造实现

Class::Class (int num, float fl ... ):_num(num),_fl(fl) 
{
  // whatevever other init task you want to do goes here
}
于 2020-04-29T16:10:45.063 回答
1

除非您正在处理模板参数,否则最好将类成员的声明和定义分别保存在头文件和源文件中。您可以通过以下方式单独保留成员初始化。

头文件
------------------

class A {
public:
A(int x, float y );

private:
int _x;
float _y;
};

然后在源文件中,可以定义为,

A::A(int x, float y ) : _x(x), _y(y) {}
于 2020-04-29T16:14:26.777 回答