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 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,如需转载请自行联系原作者


相关文章
|
6月前
|
C++
C++ 实现一个不能被copy的类
C++ 实现一个不能被copy的类
|
7月前
|
C++
Qt定义属性类信息报错‘Qstring‘ was not declared in this scope; did you mean ‘xxx‘?并且还有有一堆报错,问题还出现在moc文件
Qt定义属性类信息报错‘Qstring‘ was not declared in this scope; did you mean ‘xxx‘?并且还有有一堆报错,问题还出现在moc文件
129 0
|
7月前
|
C++
stl中copy注意的地方
stl中copy注意的地方
|
存储 算法 安全
【C++技能树】原来比C方便这么多 --引用、内联函数、Auto、NULL与nullptr
引用必须在声明部分给出定义,不能单单申明.需要指定对象
103 0
JVM虚拟机-Class文件之访问标志
JVM虚拟机-Class文件之访问标志
106 0
|
iOS开发
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
94 0
element源码阅读之对象拷贝
看了element源码里的对象拷贝的方法如下:
99 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
172 0
iOS-底层原理 10:strong&copy&weak底层分析 以及 方法签名和attribute简写含义
|
iOS开发
IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)(2)
IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)(2)
105 0
|
iOS开发
IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)(1)
IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)(1)
129 0