智能车制作

标题: C++11新特性:defaulted 与 deleted的扩展 [打印本页]

作者: Quixote    时间: 2015-11-4 17:44
标题: C++11新特性:defaulted 与 deleted的扩展
本帖最后由 Quixote 于 2015-11-4 17:45 编辑

本文只适合知道C++的人观看。了解、掌握、精通的大神们请轻喷~


源代码来自 boost


C++ 的类有四类特殊成员函数,它们分别是:默认构造函数、析构函数、拷贝构造函数以及拷贝赋值运算符。这些类的特殊成员函数负责创建、初始化、销毁,或者拷贝 类的对象。如果程序员没有显式地为一个类定义某个特殊成员函数,而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。


比如在定义SerialPort类的话,对于operation=与SerialPort(const&)的需求可能意义不算大。如果将线程处理与数据处理相分离,那么就可以共享数据接口,但目前这个构思的重构,我想放到明年。因为暂时需求没这么大。


好了。话归原题,在C++11以前,为了防止 拷贝构造函数以及拷贝赋值运算符 这两种函数的复用。一般会私有继承一个类,或者自行定义成如下形式。
class noncopyable
  {
  protected:
      noncopyable() {}
      ~noncopyable() {}
  private:  // emphasize the following members are private
      noncopyable( const noncopyable& );
      noncopyable& operator=( const noncopyable& );
  };

而在C++11中,对如上的做法做了更清晰的更正,如下定义即可。
class noncopyable
  {
  protected:
      BOOST_CONSTEXPR noncopyable() = default;
      ~noncopyable() = default;
      noncopyable( const noncopyable& ) = delete;
      noncopyable& operator=( const noncopyable& ) = delete;
  };



作者: 头上两只角    时间: 2015-11-5 07:55
大神用的那个IDE。。。
作者: Quixote    时间: 2015-11-5 13:56
头上两只角 发表于 2015-11-5 07:55
大神用的那个IDE。。。

vs与g++

作者: 头上两只角    时间: 2015-11-8 08:01
能发个G++下载链接吗???win8上能用吗???
作者: Quixote    时间: 2015-11-8 18:34
头上两只角 发表于 2015-11-8 08:01
能发个G++下载链接吗???win8上能用吗???

没用win8……我用的debian,直接apt-get就好了





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2