C++实用技术之禁止派生、拷贝和只允许派生和拷贝(C++11实现)
来源:互联网 发布:苹果软件版本 编辑:程序博客网 时间:2024/06/05 04:08
现行的C++标准是C++11,非官方叫法为C++0x,但大多数人仍然使用C++98,而且C++11完全兼容C++98,C++11添加了许多令人振奋的新特性,毋需详述,可以看相关的资料了解,前一段时间写了一篇博文如题,现在在C++11下重新实现,详解如下。
[禁止派生]
在C++11下禁止派生相当容易,如果在C++11之前需要做很多工作的,现在在C++11下很简单只需要一个新的关键字final,是的只需要final一个关键字,其实了解过java、C#的人都很熟悉这个关键字的,具体看下面代码:
class base final{public: void sayhello(){ std::cout << "hello!" << std::endl; }};
你只需要在定义class时加上final修饰符就搞定了,当有人继承了base类是编译器就会发出错误信息的
[禁止拷贝]
在c++11之前要禁止拷贝往往需要将copy构造函数,和赋值操作重载函数声明为private的,但是,这样还不够强化,它不能很醒目的提醒你该对象禁止拷贝,往往你会得到编译器的提示为copy构造函数是private的调用违法之类的提示,会让人摸不着头脑,在C++11中你只需要向下面这样做:
class rem{ rem(const rem &) = delete; rem &operator = (const rem &) = delete;};
在C++11中delete关键字有了一个新的语意,你可以像上面那样声明拷贝构造函数一旦你试图拷贝就会得到编译器明确的警告
[只允许拷贝、只允许派生]
在C++11下这两个实现差别不大可以看我的另一篇同名的博文http://blog.csdn.net/zjwdmlmx/article/details/7734234
- C++实用技术之禁止派生、拷贝和只允许派生和拷贝(C++11实现)
- C++实用技术之禁止派生、拷贝和只允许派生和拷贝
- C++----继承和派生
- 【C++】继承和派生
- C++(7)/继承和派生
- [C++]继承和派生类
- C++__继承和派生
- C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)
- C/C++——继承和派生
- C/C++实现字符串拷贝和截取
- object c的浅拷贝(地址拷贝)和深拷贝(对象拷贝)
- Object-c 深拷贝和浅拷贝
- [Objective-C]浅拷贝和深拷贝
- 【C++】深拷贝和浅拷贝
- 【C++】深拷贝和浅拷贝
- Objective-C浅拷贝和深拷贝
- 【C++】深拷贝和浅拷贝解析
- C中的深拷贝和浅拷贝
- Gprof应用程序性能分析
- LCD Driver 筆記 - Frame Buffer
- ActiveX技术综述
- jQuery操作IFRAME及元素
- 个人在linux下常用的命令
- C++实用技术之禁止派生、拷贝和只允许派生和拷贝(C++11实现)
- WCF 实例 —— 基于ADO.NET POCO Entity Framework的REST WCF
- 软件可测试性的尝试
- 闲说HeartBeat心跳包和TCP协议的KeepAlive机制
- 五大常用算法之二:动态规划算法
- mysql日志的使用
- Java系统程序员修炼之道
- xorg架构 将来 以及一些基本常识的浅析
- 1026 做游戏