c++ 如何禁止一个类被实例化

禁止类被实例化有两种方法:

  1. 设置纯虚函数,成为抽象类

  2. 将构造函数设置为私有,因为外部不能调用,所以无法实例化对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>

using namespace std;


class A {
public:
int var1, var2;
A(){
var1 = 10;
var2 = 20;
}
virtual void fun() = 0; // 纯虚函数
};

int main()
{
A ex1; // error: cannot declare variable 'ex1' to be of abstract type 'A'
return 0;
}

类中设置纯虚函数,类就变成了抽象类,不能实例化对象,作为基类,让派生类去重写纯虚函数。如果派生类不重写纯虚函数,那么派生类也成为抽象类,不能实例化对象。