有这个未使用的函数Init有什么意义

时间:2017-04-22 04:00:03

标签: c++ c++11 pointers initialization getter-setter

C ++新手,有一个未使用的函数Init的代码,如果我们从未使用它,有什么意义呢?

头文件:“KFilter.h”

#include "Eigen/Dense"
class KFilter {
  public:
    Eigen::VectorXd x_;
    KFilter();
    virtual ~KFilter();
    void Init(Eigen::VectorXd &x_in);
    void Predict();
}

cpp文件:“KFilter.cpp”

#include "KFilter.h"
using Eigen::MatrixXd;
using Eigen::VectorXd;
KFilter::KFilter() {}
KFilter::~KFilter(){}
void KFilter::Init(VectorXd &x_in) {
    x_ = x_in;
}
void KFilter::Add_one() {
    x_ += 1;
}

稍后在main.cpp中,我看到有人使用了这个KFilter类的一个对象。

KFilter ekf_;
ekf_.x_ = VectorXd(4);
ekf_.x_ < 1, 1, 1, 1;
ekf_.Add_one();

我想这有点像setter和getter,但为什么是Init?我在C ++教科书上找不到这种用法。或者是因为这里使用了指针?

1 个答案:

答案 0 :(得分:0)

您正在谈论的init函数是aconstructor。即使没有提到,所有类都有一个构造函数。在这种情况下,您可以编写Kfilter() = default;或不编写它来代替编写空的comstructor。

在某些情况下,可以删除此默认构造函数,例如,如果类包含一些不是默认构造的成员。

您也可以通过编写Kfilter() = delete;来删除此默认构造函数,这会使该类不是默认的可构造的。