wxWidgets第二课DECLARE_NO_COPY_CLASS禁止类的拷贝

说明

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

# define DECLARE_NO_COPY_CLASS(名称)\

,,wxDECLARE_NO_COPY_CLASS(名称);


而wxDECLARE_NO_COPY_CLASS的实际定义如下:

# define wxDECLARE_NO_COPY_CLASS(名称),,,\

,,私人:,,,,,,,,,,,,,,,,,,\

,,,,classname (const classname&);,,,,,,\

,,,,classname&运算符=(const classname&)

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


用法


类底座

{

,DECLARE_NO_COPY_CLASS(底座)公共:

,底座();


,虚拟~底座();

};


展开如下:

类底座

{私人:

,,底座(const BaseFrame&);

,,BaseFrame&运算符=(const BaseFrame&)

公共:

,底座();


,虚拟~底座();

};


注意

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



IMPLEMENT_DYNAMIC_CLASS

代码

# define IMPLEMENT_DYNAMIC_CLASS (n, b),,wxIMPLEMENT_DYNAMIC_CLASS (n, b)

,,//单继承一个基类

# define wxIMPLEMENT_DYNAMIC_CLASS(名称、basename),,,,,,,,,,,,,,\

,,wxIMPLEMENT_CLASS_COMMON1(名称、basename名称:wxCreateObject),,,,,\

,,wxObject *名称::wxCreateObject (),,,,,,,,,,,,,,,,,,,,,\

,,,,{返回新名称;}


说明

对运行时类信息的支持,主要是确定一个对象是否属于一特定类的实现,或者从某一特定类派生出来的

该宏定义对于引入窗户。h头文件,会引起编译错误,需要慎用


wxWidgets第二课DECLARE_NO_COPY_CLASS禁止类的拷贝