博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wxWidgets第二课 DECLARE_NO_COPY_CLASS 禁止类的拷贝
阅读量:6237 次
发布时间:2019-06-22

本文共 1104 字,大约阅读时间需要 3 分钟。

说明

    在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头文件,会引起编译错误,需要慎用

     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1954713,如需转载请自行联系原作者
你可能感兴趣的文章
SQL Server2012中的Throw语句尝试
查看>>
[观点]尽可能的缓存
查看>>
怎么了解某一研究领域的总体发展趋势
查看>>
关于MapControl和PageLayoutControl同步的一点分析
查看>>
Convert an object into Json using SBJson or other JSON library
查看>>
C++中的类所占内存空间总结
查看>>
Java之命令模式(Command Pattern)
查看>>
WCF RIA Services 简单应用
查看>>
毕业了,校园里走走看看——华中科技大学
查看>>
C#.NET 添加图片水印
查看>>
wcf系列5天速成——第一天 binding的使用(1)
查看>>
ExtJs布局之viewport
查看>>
Lua学习笔记
查看>>
1、第一个JSP
查看>>
希尔排序(Shell)
查看>>
Nginx-location配置指南
查看>>
Knockout应用开发指南 第一章:入门
查看>>
C# 6.0新特性
查看>>
二叉树(9)----打印二叉树中第K层的第M个节点,非递归算法
查看>>
MySQL数据库的几种常见高可用方案
查看>>