摘要:
未完成的需求: 上图中的第三条我们没有完成。 上一节的程序中,我们每次打印对象数目的时候都要依赖一个对象名,当对象为0时,我们就无法获得对象数目。 解决方案1: 将静态成员变量改为public的,这样我们就可以直接访问了,随时可以获得对象的数目。 如下: 上面程序可以得到正确的结果,但是安全性得不到 阅读全文
posted @ 2018-09-01 16:03
周伯通789
阅读(187)
评论(0)
推荐(0)
摘要:
成员变量的回顾: 新的需求: 使用全局变量可以解决这个问题,但是使用全局变量在当代的软件开发中是不受欢迎的。 静态成员变量: 静态成员变量的生命期如同全局变量一样,就是程序的运行周期。 由于静态成员变量不属于某个对象,而是属于这个类的,因此,静态成员变量不可能占用对象的空间,所以静态成员变量只能在类 阅读全文
posted @ 2018-09-01 15:32
周伯通789
阅读(168)
评论(0)
推荐(0)
摘要:
关于析构的疑问: 当程序中存在多个对象的时候,如何确定这些对象的析构顺序? 多个对象析构时,析构顺序与构造顺序相反。 假设构造三个对象a、b、c,则程序结束时,析构顺序为c、b、a。 程序示例: 首先构造全局对象gA,然后mA、mB,最后Test本身,析构顺序相反。 运行结果如下: 关于析构的答案: 阅读全文
posted @ 2018-09-01 13:16
周伯通789
阅读(167)
评论(0)
推荐(0)
摘要:
有趣的问题: 我们在无参构造函数中调用带一个参数的构造函数。 程序如下: 运行结果如下: mi并没有打印出0,而是一个随机值。 发生了什么呢? 思考: 构造函数可以直接手工调用。 上面的程序第10行直接调用了构造函数产生了临时对象。它的生命期只有第10行这一条语句,过了这条语句就会被析构。 而且这个 阅读全文
posted @ 2018-09-01 11:55
周伯通789
阅读(128)
评论(0)
推荐(0)
摘要:
对象的销毁: 前几节的程序中,我们在数组类中自己定义了free函数来释放空间,free函数需要我们手动调用,手动调用就有可能出错或者忘记调用,从而造成内存泄漏。,这次,我们定义了析构函数,由程序自动调用。 析构函数: 析构函数没有返回值,没有参数,因此,析构函数是不能重载的。 析构函数使用初探: 运 阅读全文
posted @ 2018-09-01 11:31
周伯通789
阅读(163)
评论(0)
推荐(0)
摘要:
问题: C++中的类可以定义多个对象,那么对象的构造顺序是怎么样的? 对象的构造顺序一: 示例如下: 运行结果如下: 添加上goto语句,运行结果如下: 引入goto使得30-37行的程序被跳过,因此a对象就不会被构造了。 执行流和局部对象的构造息息相关。 非法改变程序的执行流,可能引起灾难性的错误 阅读全文
posted @ 2018-09-01 11:06
周伯通789
阅读(366)
评论(0)
推荐(0)
摘要:
类中是否可以定义const成员? 小实验: 类中的const成员实验: 编译结果如下: 可以看到用这个类定义一个对象时,const成员必须要初始化。但是这个初始化不能在构造函数中去做。 因为ci是只读变量,只读变量是不能出现在赋值符号的左边的,所以第10行会报错。编译器提示我们要在第八行进行初始化, 阅读全文
posted @ 2018-09-01 10:10
周伯通789
阅读(281)
评论(0)
推荐(0)
摘要:
特殊的构造函数: 示例如下: 17-24行就是编译器替我们提供的默认构造函数和拷贝构造函数。 运行结果如下: 可以看到t1和t2中i和j的值是一样的。 当我们的类中没有编写任何的构造函数时,编译器才会给我们提供默认的构造函数,拷贝构造函数是构造函数的一种。 拷贝构造函数: 兼容C语言的方式类似于 T 阅读全文
posted @ 2018-09-01 00:01
周伯通789
阅读(202)
评论(0)
推荐(0)
浙公网安备 33010602011771号