上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 56 下一页
摘要: 函数重载回顾: 类中的重载: 万变不离其宗: 类中的普通成员函数和静态成员函数也够成重载。 示例程序: 运行结果如下: 深度的意义: 重载的意义分析: strncpy实现的功能和strcpy差不多,但是又多了一个名字,导致容易记忆混乱,因此,我们采用strcpy重载的方式将strncpy封装起来。 阅读全文
posted @ 2018-09-01 19:27 周伯通789 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 友元的概念: 友元的用法: 程序示例: 运行结果如下: 友元函数可以提高效率,因为在32、33行我们可以直接访问对象中的成员了,而不再使用功能函数。 友元的尴尬: 注意事项: 示例: 46-49行的程序是不合法的,因为A不是C的友元,友元不能传递。 运行结果如下: 小结: 阅读全文
posted @ 2018-09-01 18:57 周伯通789 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 构造函数的回顾: 问题: 异常的构造函数: 第12行我们在构造函数中调用了return,运行结果如下: mj的值变成了随机数,意味着mj的值没有被初始化。 第28行的创建的对象t1,它虽然执行了构造函数,但是构造函数的内部是有问题的,有问题也仅仅导致了对象的初始状态不正确,并没有影响t1这个对象的诞 阅读全文
posted @ 2018-09-01 17:08 周伯通789 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 未完成的需求: 上图中的第三条我们没有完成。 上一节的程序中,我们每次打印对象数目的时候都要依赖一个对象名,当对象为0时,我们就无法获得对象数目。 解决方案1: 将静态成员变量改为public的,这样我们就可以直接访问了,随时可以获得对象的数目。 如下: 上面程序可以得到正确的结果,但是安全性得不到 阅读全文
posted @ 2018-09-01 16:03 周伯通789 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 成员变量的回顾: 新的需求: 使用全局变量可以解决这个问题,但是使用全局变量在当代的软件开发中是不受欢迎的。 静态成员变量: 静态成员变量的生命期如同全局变量一样,就是程序的运行周期。 由于静态成员变量不属于某个对象,而是属于这个类的,因此,静态成员变量不可能占用对象的空间,所以静态成员变量只能在类 阅读全文
posted @ 2018-09-01 15:32 周伯通789 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 关于析构的疑问: 当程序中存在多个对象的时候,如何确定这些对象的析构顺序? 多个对象析构时,析构顺序与构造顺序相反。 假设构造三个对象a、b、c,则程序结束时,析构顺序为c、b、a。 程序示例: 首先构造全局对象gA,然后mA、mB,最后Test本身,析构顺序相反。 运行结果如下: 关于析构的答案: 阅读全文
posted @ 2018-09-01 13:16 周伯通789 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 有趣的问题: 我们在无参构造函数中调用带一个参数的构造函数。 程序如下: 运行结果如下: mi并没有打印出0,而是一个随机值。 发生了什么呢? 思考: 构造函数可以直接手工调用。 上面的程序第10行直接调用了构造函数产生了临时对象。它的生命期只有第10行这一条语句,过了这条语句就会被析构。 而且这个 阅读全文
posted @ 2018-09-01 11:55 周伯通789 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 对象的销毁: 前几节的程序中,我们在数组类中自己定义了free函数来释放空间,free函数需要我们手动调用,手动调用就有可能出错或者忘记调用,从而造成内存泄漏。,这次,我们定义了析构函数,由程序自动调用。 析构函数: 析构函数没有返回值,没有参数,因此,析构函数是不能重载的。 析构函数使用初探: 运 阅读全文
posted @ 2018-09-01 11:31 周伯通789 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 问题: C++中的类可以定义多个对象,那么对象的构造顺序是怎么样的? 对象的构造顺序一: 示例如下: 运行结果如下: 添加上goto语句,运行结果如下: 引入goto使得30-37行的程序被跳过,因此a对象就不会被构造了。 执行流和局部对象的构造息息相关。 非法改变程序的执行流,可能引起灾难性的错误 阅读全文
posted @ 2018-09-01 11:06 周伯通789 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 类中是否可以定义const成员? 小实验: 类中的const成员实验: 编译结果如下: 可以看到用这个类定义一个对象时,const成员必须要初始化。但是这个初始化不能在构造函数中去做。 因为ci是只读变量,只读变量是不能出现在赋值符号的左边的,所以第10行会报错。编译器提示我们要在第八行进行初始化, 阅读全文
posted @ 2018-09-01 10:10 周伯通789 阅读(266) 评论(0) 推荐(0) 编辑
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 56 下一页