设计一个类,只能在堆上创建对象。
思考:
1.因为无论是在堆上还是在栈上创建对象,都要调用构造函数。所以要防止在栈上创建对象,构造函数要私有化。
2.因为构造函数的私有化,所以不能在类外调用构造函数,那么类中就要有一个共有的成员函数,在其中new一个对象出来。但是在调用该成员函数的时候又必须先创建一个对象才能调用,所以这个时候将该成员函数设置成静态函数,这样就能够只通过类名来访问这个静态成员函数了。
3.因为拷贝构造函数也是在栈上创建对象。所以为防止别人调用拷贝来在栈上创建对象,可以把它私有化并只声明,这样其他成员函数就不能调用它了。
总结:
1.将构造和拷贝构造函数私有化,拷贝构造只声明。
2.提供一个公共的静态成员函数,在该静态函数中完成在堆上创建对象。
class HeapOnly
{
public:
static HeapOnly* Create()