带有成员初始化的类的实现文件(.cpp)

问题描述 投票:0回答:1

我的问题一定很简单,但我找不到一个正确的方法,将初始化成员的构造函数分割成.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;
    }

但是有没有办法把成员初始化保留在头文件中呢?先谢谢了! 另外,在专业的编码中,什么会是首选呢?

c++ encapsulation member-initialization
1个回答
2
投票

你需要在.cpp中包含成员init和构造实现。

Class::Class (int num, float fl ... ):_num(num),_fl(fl) 
{
  // whatevever other init task you want to do goes here
}

1
投票

最好在头文件和源文件中分别保留类成员的声明和定义,除非你处理的是模板参数。你可以用以下方式分别保存成员初始化。

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

private:
int _x;
float _y;
};

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

A::A(int x, float y ) : _x(x), _y(y) {}
© www.soinside.com 2019 - 2024. All rights reserved.