首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

A 是一个类, 怎么让A* a = new A()编译不过

2013-02-24 
A 是一个类, 如何让A* a new A()编译不过是在说怎么让A不能创建对象?设计模式?抽象类??设计模式抽象类一

A 是一个类, 如何让A* a = new A()编译不过
是在说怎么让A不能创建对象?设计模式?抽象类?? 设计模式 抽象类 一道面试题
[解决办法]
A 是一个类, 如何让A* a = new A()编译不过

这是考智力么? 方法比较多: 


A不提供默认构造函数(也就是构造函数都有参数, 编译报错: 没有提供合适的参数来调用构造函数
A有默认构造函数, 但是为protected/protected, 编译报错: 构造函数为私有/保护
给A加上template <typename T>, 编译报错: 没有提供合适的类型参数来实例化
重载void* operator new(size_t size)为private/protected, 编译报错: new 操作符私有/保护
定义一个纯虚的析构函数 virtual pureFunc()=0; 编译报错: 抽象类无法实例化

[解决办法]
让A* a = new A()编译不过
可能是为了实现单件模式
把A的构造函数放到private:

class A
{
private:
A(){}
public:
 static A* GetInstance(){static A instance;return &instance;}
}
可以通过A::GetInstance()->
访问这个类

热点排行