DECLARE_NO_COPY_CLASS

说明

在defs.h文件中,对该宏进行了如下的定义

#define DECLARE_NO_COPY_CLASS(classname) \

wxDECLARE_NO_COPY_CLASS(classname);

而wxDECLARE_NO_COPY_CLASS的实际定义如下:

#define wxDECLARE_NO_COPY_CLASS(classname)      \

private:                                    \

classname(const classname&);            \

classname& operator=(const classname&)

从上述的宏定义展开来看,将类的拷贝构造函数和等号操作运算符设置为私有成员函数,禁止了类外的任何拷贝。

用法

class BaseFrame

{

DECLARE_NO_COPY_CLASS(BaseFrame)

public:

BaseFrame();

virtual ~BaseFrame();

};

展开如下:

class BaseFrame

{

private:

BaseFrame(const BaseFrame&);

BaseFrame& operator=(const BaseFrame&)

public:

BaseFrame();

virtual ~BaseFrame();

};

注意

在头文件中,函数的参数列表中的变量名并不重要,可以不写,函数的声明和实现的列表变量名可以不一样,但是变量的类型必须保持一致

时间: 2024-12-27 15:41:40

DECLARE_NO_COPY_CLASS的相关文章

wxWidgets第二课 DECLARE_NO_COPY_CLASS 禁止类的拷贝

说明 在defs.h文件中,对该宏进行了如下的定义 #define DECLARE_NO_COPY_CLASS(classname) \ wxDECLARE_NO_COPY_CLASS(classname); 而wxDECLARE_NO_COPY_CLASS的实际定义如下: #define wxDECLARE_NO_COPY_CLASS(classname)      \ private:                                    \ classname(const