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

  • 相关阅读:
    Power OJ 2790.GAUSS 2014(KMP或AC自动机+矩阵快速幂)
    PowerOJ 2789 上决╇ф的战争 (KMP)
    牛客网 The K-th Largest Interval (二分+尺取)
    牛客网 wyh的天鹅 (权值线段树)
    图像边缘计算 canny算子
    图像边缘检测 拉普拉斯算子
    图像边缘检测,sobel,scharr
    卷积的边缘像素填充
    图像的二值化
    图像的上采样和下采样
  • 原文地址:https://www.cnblogs.com/nzbbody/p/3382931.html
Copyright © 2011-2022 走看看