我有一个大程序,其中包含一些使用指向成员函数的类。一般的代码结构是:
#include <iostream>
using namespace std;
/**** CLASS FOO ****/
class Foo {
public:
Foo(); //constructor
void Fun(){ /* stuff */ }; //some function
void (Foo::*PointFun)(); //pointer-to-member function
inline void POINTFUN() //for readability when calling PointFun
{
return (this->*PointFun)();
}
};
/**** Foo constructor ****/
Foo::Foo()
{
PointFun = &Foo::Fun; //define PointFun
}
/**** main program ****/
int main()
{
Foo p; //calls constructor
p.Fun(); //calls some function
p.POINTFUN(); //calls PointFun
return 0;
}
此代码按原样编译。但是,我的问题是:在这种情况下,我是否需要定义复制构造函数和/或析构函数?
例如,我可以定义
Foo::Foo(const Foo& p) //Foo copy-constructor
{
PointFun = p.PointFun;
}
Foo::~Foo() {} //Foo destructor
但我认为这可以由编译器默认给出。另外,我不确定默认析构函数,因为涉及到一个指针。