摘要: 1. 类型转换函数 (1)C++类中可以定义类型转换函数 (2)类型转换函数用于将类对象转换为其它类型 (3)语法规则: operator Type() //重载类型运算符 { Type ret; //…… return ret; } 【编程实验】类型转换函数初探 42-1.cpp #include 阅读全文
posted @ 2018-12-23 23:49 梦心之魂 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 1. 再论类型转换 (1)标准数据类型之间会进行隐式的类型安全转换 (2)转换规则: 【实例分析】有趣的隐式类型转换 41-1.cpp #include <iostream> using namespace std; int main() { short s ='a'; unsigned int u 阅读全文
posted @ 2018-12-23 23:43 梦心之魂 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 1. ++i和i++真的有区别吗? (1)现代编译器会对代码进行优化 对于基础类型,前置++和后置++的汇编代码几乎是一样的,最终效率完全一样。 (2)优化使得最终的二进制程序更加高效 (3)优化后的二进制程序丢失了C/C++的原生语义 (4)不可能从编译后的二进制程序还原C/C++程序 【编程实验 阅读全文
posted @ 2018-12-23 23:36 梦心之魂 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 1. 逗号操作符(,) (1)逗号表达式用于将多个子表达式连接为一个表达式 (2)逗号表达式的值为最后一个子表达式的值 (3)逗号表达式的前N-1个子表达式可以没有返回值 (4)逗号表达式按照从左向右的顺序计算每个子表达式的值 exp1,exp2,exp3,…,expN; 【实例分析】逗号表达式的示 阅读全文
posted @ 2018-12-23 23:28 梦心之魂 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1. 逻辑运算符的原生语义 (1)操作数只有两种值(true和false) (2)逻辑表达式不用完全计算就能确定最终值 (3)最终结果只能是true或false 【编程实验】逻辑表达式 38-1.cpp #include <iostream> using namespace std; int fun 阅读全文
posted @ 2018-12-23 23:24 梦心之魂 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 1. 永恒的话题:内存泄漏 (1)动态申请堆空间,用完后不归还 (2)C++语言中没有垃圾回收的机制 (3)指针无法控制所指堆空间的生命周期 【编程实验】内存泄漏 37-1.cpp #include <iostream> #include "IntArray.h" using namespace s 阅读全文
posted @ 2018-12-23 23:20 梦心之魂 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 1. 关于赋值的疑问 (1)疑问 ①编译器为每个类默认重载了赋值操作符 ②默认的赋值操作符仅完成浅拷贝 ③当需要进行深拷贝时必须重载赋值操作符 ④赋值操作符与拷贝构造函数有相同的存在意义 【编程实验】默认赋值操作符重载 36-1.cpp #include <iostream> using names 阅读全文
posted @ 2018-12-23 23:12 梦心之魂 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么需要函数对象 (1)案例 ①编写一个函数,使函数可以获得斐波那契数列每项的值。 ②每调用一次返回一个值 ③函数可根据需要重复使用 【编程实验】第一个解决方案 35-1.cpp #include <iostream> using namespace std; int fib() { sta 阅读全文
posted @ 2018-12-23 23:06 梦心之魂 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1. 字符串类的兼容性 (1)string类最大限度的考虑了C字符串的兼容性 (2)可以按照使用C字符串的方式使用string对象 string s = "abcedefg"; char c = s[i]; 【编程实验】用C方式使用string类 34-1.cpp #include <iostrea 阅读全文
posted @ 2018-12-23 11:22 梦心之魂 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1. 历史遗留问题及解决方案 (1)历史遗留问题 ①C语言不支持真正意义上的字符串 ②C语言用字符数组和一组函数实现字符串操作 ③C语言不支持自定义类型,因此无法获得字符串类型 (2)解决方案 ①从C到C++的进化过程引入了自定义类型 ②在C++中可以通过类完成字符串类型的定义 2. 标准库中的字符 阅读全文
posted @ 2018-12-23 10:52 梦心之魂 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 1. 有趣的重载 (1)操作符<<:原义是按位左移,重载“<<”可将变量或常量左移到对象中 【编程实验】重载左移操作符(仿cout类) 32-1.cpp #include <stdio.h> const char endl = '\n'; class Console { public: Consol 阅读全文
posted @ 2018-12-23 10:35 梦心之魂 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 1. 复数类应具有的操作 (1)运算:+、-、*、/ (2)比较:==、!= (3)赋值:= (4)求模:modulus 2. 利用操作符重载 (1)统一复数与实数的运算方式 Complex operator + (const Complex& c); Complex operator - (con 阅读全文
posted @ 2018-12-23 10:19 梦心之魂 阅读(112) 评论(0) 推荐(0) 编辑