zoukankan      html  css  js  c++  java
  • 单例模式

    1、使用C#语言,比较简单,使用私有的构造方法和公有的静态方法返回静态实例。在C#中,赋值的时候,基本类型是整体拷贝,引用类型是复制引用。

    2、使用C++语言,有几个地方需要注意:

      a、编译器会自动生成copy构造方法和copy复制操作符,从而导致生成多个实例。为了解决这个问题,声明私有的copy构造方法和copy复制操作符,但是不定义。通过继承noncopyable是个好办法,noncopyable中声明了私有的copy构造和copy赋值,并且构造方法是protected。子类会继承父类的所有成员,只不过是不能访问父类的私有成员。

      b、静态构造方法返回引用没有问题,如果返回指针,需要考虑什么时候释放内存。正确的做法是,RAII资源获取就初始化,使用share_ptr包装返回的实例指针。

    3、在C#中 Person p = new Person(); 包括三个过程:①定义Person类型的变量,变量名为p;②在托管堆上分配一个Person对象;③变量p指向分配的Person对象。相对于C++,p是一个弱化的指针,强化的引用。为什么?

      a、C++中的指针可以做加减操作,这里的p不可以;

      b、C++中的引用必须初始化,而且不能指向其他对象,这里的p允许不初始化,同时可以指向其他对象。

    4、语句 Person p;

      在C++中,表达的意思是:在栈上定义对象,必定会调用构造方法。

      在C#中,定义一个Person类型的变量p,p指向null

  • 相关阅读:
    纯css制作带三角(兼容所有浏览器)
    xmapp 404设置
    css 选择器
    IE6/IE7/IE8下float:right的异常及其解决方法
    artdialog5 bug
    jQuery插件开发--(转)
    Global对象
    JS 关于(function( window, undefined ) {})(window)写法的理解
    wx-charts 微信小程序图表插件
    小程序二次贝塞尔曲线,购物车商品曲线飞入效果
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3382931.html
Copyright © 2011-2022 走看看