![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
九章算法
qingcunsuiyue
集美貌、智慧、才华于一身的女子。
展开
-
第二讲:如何定义一个只能在堆上生成对象的类
程序在内存中的分配情况: 1.BSS段:存放程序未初始化的全局变量和static变量。 2.代码段:存放程序执行代码。 3.Data段:它包括堆,栈,静态数据区。 (1)静态数据区:存放程序已初始化的全局变量和static变量 (2)堆:存放进程运行中被动态分配的内存段,换句话说,就是程序员自己分配的内 存,用malloc或new实现。原创 2016-11-11 13:39:13 · 603 阅读 · 0 评论 -
如何定义一个只能在栈上生成对象的类
这个题目考察了对C++语法的理解和应用。 1.只能在栈上声明对象,说明这个类不能在堆上声明,也就是说不能用new来实现。 2.把类的构造函数声明为protect,就可以达到在类外不用在堆上new,但这个也同时在类外不能在栈上声明对象,必须在类内实现一个接口,来达到在栈上声明对象。 3.在类外调用成员函数,必须要用类的对象来调用,但是在类外不能声明类的对象,这个要怎么办呢??? 在类的原创 2017-07-05 17:53:46 · 354 阅读 · 0 评论 -
不能被继承的类
解题思路: 1、C++中的子类构造函数会自动的调用父类的构造函数,子类析构函数会自动调用父类的析构函数。那么把构造和析构函数定义为私有的,就不能被继承了。 2、缺陷:定义为私有函数时,要在类外创建类的对象,只能实现成要么在栈上创建要么在堆上创建。 //因为构造函数和析构函数都为私有的,所以他不能被继承 //缺陷:它只能在堆上生成,不能在栈上生成。 class A { public: sta原创 2017-07-06 00:22:52 · 741 阅读 · 0 评论