如何定义一个只能在堆上(栈上)生成对象的类?
1.C++中类的对象如何建立?
(1)静态建立
class A{
...
};
A a;
静态建立一个类的对象,编译器为该对象在栈中分配内存,通过直接移动栈顶指针,挪出适当空间;然后调用类的构造函数形成一个栈上的对象。
注意:直接调用类的构造函数。当销毁对象时,调用类的析构函数。
(2)动态建立
动态建立类对象,使用new运算符将对象简历在堆空间中。
class A{
...
};
A *ptr = new A();
A *ptr = new A;
首先执行operator new()函数,在堆中找到合适空间分配;然后调用构造函数初始化。
注意:间接调用类的构造函数。
2.只能在堆上
要求类对象只能建在堆上,就是说用户不能调用类的构造函数。将构造函数设为私有?
class B {
private:
B() {