C++将类的构造函数、析构函数声明为private或者protected的用途

摘要:
如果构造函数和析构函数声明为私有或受保护,那么类A的构造函数和析析构函数将声明为受保护,而类A的子类的构造函数和构造函数将声明为公共。classA{protected:A(){}public:publicA{public:B()}…};Aa;classA{private:A(){}~A(){}public:

如果将构造函数、析构函数声明为private或者protected,表示不能从类的外部正常调用构造和析构函数了。

这种用法的通常使用的场景如下:

1、如果不想让外面的用户直接构造一个类A的对象,而希望用户只能构造这个类A的子类,那就把这个类A的构造函数、析构函数声明为protected,而将类A子类的构造函数和析构函数声明为public。例如:

   

class A
{ protected: A(){}
  public: ....
};
calss B : public A
{ public: B(){}
  ....
};

A a; // error
B b; // ok

2、如果将构造函数、析构函数声明为private,那只能在这个类的成员内构造这个类的对象了。
class A{
private:
    A(){  }
    ~A(){ }

public:
    void Instance()//类A的内部的一个函数
    {
        A a;
    }

  static A& GetInstance()
{
static A a;
return a;
}
};

免责声明:文章转载自《C++将类的构造函数、析构函数声明为private或者protected的用途》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇文件上传漏洞(File Upload)MySQL锁问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

名称空间

一、函数对象 定义:函数名存放的就是函数的地址,所以函数名就是对象,称之为函数对象 可以直接被引用 可以当作函数参数传值 可以作为函数发返回值 可以作为容器类型的元素 def add(a,b): return a+b def low(a,b): return a-b def jump(a,b): return a*b def...

SQLITE3 使用总结(直接使用C函数)

转载网址:http://blog.chinaunix.net/uid-8447633-id-3321394.html 前序: Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对 sqlite3 的研究列出来,以备忘记。 这里要注明,我是一个跨平台专注者,并不喜欢只用 window...

使用TSQL的Rand函数生成随机数的艰苦历程

在上一篇《大量数据插入的几种方式的速度比较》里,有一列数据是用Rank函数来生产的,用来造假数据。 现在的问题是,如果要更新这一列的值,怎么办呢?也许全部删除,重新插入一遍就可以。但是太慢了。于是随手就写出了下面的代码。   Update aTable Set aColumn = @MaxInt *RAND()   结果完全出乎意料,这一列的值全是一样的!...

index+small+row+if经典函数组合应用

EXCEL中index+small+row+if 函数组合可以查出满足同一条件的所有记录,通过实例讲解: 本文为原创,转载需标明出处,谢谢! 例:查找出一年级的所有班级及人数: A B  C D 1 年级 班级 人数 2 一年级 二班 36 3 一年级 三班 38 4 二年级 一班 39 5 一年级 一班 41 6 二年级...

Segmentation fault (core dumped) 错误的一种解决场景

错误类型 Segmentation fault (core dumped) 产生原因 Segmentation fault 段错误。 Core Dump 核心转储(是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试),其实“吐核”这个词形容的很恰当,就是核心内存吐出来。 出...

python的接口和抽象类

抽象基类有些面向对象的语言,如JAVA,支持接口,可以声明一个支持给定的一些方法方法,或者支持给定存取协议的类。抽象基类(或者ABCs)是Python里一个相同的特性。抽象基类由abc模块构成,包含了一个叫做ABCMeta的metaclass。这个metaclass由内置的isinstance()和issubclass()特别处理,并包含一批会被Pytho...