【发布时间】:2015-11-12 16:56:18
【问题描述】:
我正在浏览一些代码,计划对其进行调整以用于我的研究。所以头文件看起来像这样
#ifndef SPECTRALCLUSTERING_H_
#define SPECTRALCLUSTERING_H_
#include <vector>
#include <eigen3/Eigen/Core>
class SpectralClustering {
public:
SpectralClustering(Eigen::MatrixXd& data, int numDims);
virtual ~SpectralClustering();
std::vector<std::vector<int> > clusterRotate();
std::vector<std::vector<int> > clusterKmeans(int numClusters);
int getNumClusters();
protected:
int mNumDims;
Eigen::MatrixXd mEigenVectors;
int mNumClusters;
};
#endif /* SPECTRALCLUSTERING_H_ */
主代码后面
#include "SpectralClustering.h"
#include <eigen3/Eigen/QR>
SpectralClustering::SpectralClustering(Eigen::MatrixXd& data, int numDims):
mNumDims(numDims),
mNumClusters(0)
所以我不明白为什么在 .h 文件中使用了虚拟析构函数。从this我们可以了解到,当您可以通过指向基类的指针删除派生类的实例时,虚拟析构函数很有用。但我认为这段代码并非如此。有人能解释一下吗?
【问题讨论】:
-
如果他们特意定义了一个虚拟析构函数,那是因为他们预计有人会使用
SpectralClustering作为基类来创建派生类。
标签: c++ inheritance virtual-destructor