上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 58 下一页
摘要: 思考: 在C++中能否将泛型的思想应用到类呢? 类模板: 类模板的应用: 实验: 运行结果如下: 编译器编译到16行发现两个string类型相减,而string类本身不支持这种相减操作,于是编译器去找string类型减法的重载,于是找到了28行的函数,最终编译成功,执行时也调用到了28行的重载函数。 阅读全文
posted @ 2018-09-04 23:11 周伯通789 阅读(284) 评论(0) 推荐(0)
摘要: 深入理解函数模板: 注意事项: 示例: 两个指针打印了不同的值,这说明编译器根据函数模板产生了两个具体的函数。 添加一个新类型: 结果如下: 我们将类的拷贝构造函数定义成私有的,编译器检测出了错误。 我们的模板是没有问题的,编译器在进行第一次编译时没有错误,并且产生一个参数类型为Test的函数。 在 阅读全文
posted @ 2018-09-04 22:47 周伯通789 阅读(180) 评论(0) 推荐(0)
摘要: 发散性问题: C++有几种交换变量的方法? 定义宏代码块与函数: 实验: 结果如下: 每当我们需要交换两个变量的值时,就需要重载一个函数,这是重复性的劳动。 优缺点分析: 我们需要找到一种方法可以集合宏和函数的优点。 泛型编程: 函数模板: 实验: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-04 22:21 周伯通789 阅读(198) 评论(0) 推荐(0)
摘要: 关于动态内存分配: new Test共完成两步: 1、申请堆空间 2、在申请的堆空间上调用构造函数 示例程序: 第18行申请了内存空间,然后在申请的内存空间上调用了构造函数。 而第19行仅仅是申请了内存空间。 面向对象中尽量使用new。 new是C++语言的一部分。 delete: 第25行的del 阅读全文
posted @ 2018-09-04 21:40 周伯通789 阅读(223) 评论(0) 推荐(0)
摘要: 多重继承问题3: 示例: 用pbb指针去掉用funcB函数,结果打印的是funcA。这是不期望的。 问题分析: 这是由于第34行的强制类型转换造成的。 程序改进: 使用dynamic_cast做类型转换时,会有一个对指针修正的过程。暴力的强制类型转换没有指针修正过程。 结果如下: 工程中正确的使用多 阅读全文
posted @ 2018-09-03 23:47 周伯通789 阅读(194) 评论(0) 推荐(0)
摘要: 问题: C++中是否允许一个类继承自多个父类? 这就是多重继承。 多重继承问题1: 结果如下: pa和pb地址是不一样的,这就是多重继承的问题。 分析: 两个指针地址值不一样时,它们也有可能指向的是同一个对象,这就是多重继承引入的问题。 多重继承的问题2: 示例程序: 虚继承就不会调用父类的构造函数 阅读全文
posted @ 2018-09-03 23:12 周伯通789 阅读(233) 评论(0) 推荐(0)
摘要: 什么是抽象类? 问题: Shape类有必要存在吗? 抽象类是面向对象中必须支持的。 抽象类初探: 编译结果如下: 完善示例: 纯虚函数要在子类中重写。 运行结果: 抽象类不能定义对象,但是抽象类可以定义指针。 抽象类与纯虚函数: 接口: C++中没有真正的接口,没有具体的语法支持,后续的语言C#、J 阅读全文
posted @ 2018-09-03 23:01 周伯通789 阅读(256) 评论(0) 推荐(0)
摘要: 继承对象模型: 继承对象模型初探: 结构体与类等价的示例: 可以看到mi、mj、mk被改变了,这三个值在外界本来是访问不到的,但是现在通过一个指针却改变了。 这说明本例中结构体的内存分布和继承类对象的内存分布是一样的。 父类的成员排在前面,继承类新添加的成员排在后面。 多态对象模型: 多态本质分析小 阅读全文
posted @ 2018-09-03 21:52 周伯通789 阅读(224) 评论(0) 推荐(0)
摘要: C++的对象模型就是C++的对象在内存中是如何排布的。 C++的对象就包含了成员变量和成员函数。 回归本质: class和struct遵循相同的内存对齐规则,因此计算class占用的内存大小和struct一样。 值得思考的问题: 对象内存布局初探: 可以看出打印的都是20。 增加成员函数: 第40行 阅读全文
posted @ 2018-09-02 22:31 周伯通789 阅读(231) 评论(0) 推荐(0)
摘要: 上一节中,函数重写遇上赋值兼容出现了问题: 34、35行调用的都是父类中的print函数。 35行我们给的实参是Child对象,期望调用子类中的print函数,但是运行结果并不是这样。 函数重写回顾: 子类中重定义父类中已有的函数,就是因为父类中的函数满足不了我们的需求。 我们期望的是只要是子类对象 阅读全文
posted @ 2018-09-02 22:01 周伯通789 阅读(232) 评论(0) 推荐(0)
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 58 下一页