wxWidgets第二课DECLARE_NO_COPY_CLASS禁止类的拷贝

说明

创新互联建站网站建设公司,提供成都网站制作、网站设计、外贸网站建设,网页设计,建网站,PHP网站建设等专业做网站服务;可快速的进行网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,是专业的做网站团队,希望更多企业前来合作!

    在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();

};

注意

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

IMPLEMENT_DYNAMIC_CLASS

代码

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

    // Single inheritance with one base class

#define wxIMPLEMENT_DYNAMIC_CLASS(name, basename)                             \

    wxIMPLEMENT_CLASS_COMMON1(name, basename, name::wxCreateObject)           \

    wxObject* name::wxCreateObject()                                          \

        { return new name; }

说明

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

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

网页题目:wxWidgets第二课DECLARE_NO_COPY_CLASS禁止类的拷贝
文章出自:https://www.cdcxhl.com/article22/gisgjc.html

成都网站建设公司_创新互联,为您提供移动网站建设响应式网站网站营销动态网站全网营销推广网站收录

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站建设网站维护公司