只能在堆上创建对象or只能在栈上创建对象

  • 在栈上常见对象特点最显著的就是最后系统调用完以后销毁对象
  • 在堆上创建对象了,即是自己申请对象资源空间自己销毁。
    好吧,看一下在栈上创建对象吧。
class StackOnly   
{
public:       
	static StackOnly CreateObject()     
	{ 
		return StackOnly();
	} private:   
		StackOnly() 
		{} 
};

栈上创建对象,嗯是没有啥说的,只要在调用构造函数时候没有使用new,operator就行了
在来看一下在堆上创建对象吧

class HeapOnly    {
public:     
	static HeapOnly* CreateObject() 
	{ 
		return new HeapOnly;
	} private:    
		HeapOnly() {}         
		HeapOnly(const HeapOnly&);
		   
	HeapOnly(const HeapOnly&) = delete; 
};

将拷贝构造函数,构造函数私有化,防止直接的调用拷贝构造函数,和构造函数,然后在public中设置一个静态成员函数完成堆对象的创建

猜你喜欢

转载自blog.csdn.net/sing_Hwang/article/details/85771797
今日推荐