上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 57 下一页
摘要: 发散性问题: C++有几种交换变量的方法? 定义宏代码块与函数: 实验: 结果如下: 每当我们需要交换两个变量的值时,就需要重载一个函数,这是重复性的劳动。 优缺点分析: 我们需要找到一种方法可以集合宏和函数的优点。 泛型编程: 函数模板: 实验: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-04 22:21 周伯通789 阅读(196) 评论(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 阅读(193) 评论(0) 推荐(0)
摘要: 问题: C++中是否允许一个类继承自多个父类? 这就是多重继承。 多重继承问题1: 结果如下: pa和pb地址是不一样的,这就是多重继承的问题。 分析: 两个指针地址值不一样时,它们也有可能指向的是同一个对象,这就是多重继承引入的问题。 多重继承的问题2: 示例程序: 虚继承就不会调用父类的构造函数 阅读全文
posted @ 2018-09-03 23:12 周伯通789 阅读(231) 评论(0) 推荐(0)
摘要: 什么是抽象类? 问题: Shape类有必要存在吗? 抽象类是面向对象中必须支持的。 抽象类初探: 编译结果如下: 完善示例: 纯虚函数要在子类中重写。 运行结果: 抽象类不能定义对象,但是抽象类可以定义指针。 抽象类与纯虚函数: 接口: C++中没有真正的接口,没有具体的语法支持,后续的语言C#、J 阅读全文
posted @ 2018-09-03 23:01 周伯通789 阅读(255) 评论(0) 推荐(0)
摘要: 继承对象模型: 继承对象模型初探: 结构体与类等价的示例: 可以看到mi、mj、mk被改变了,这三个值在外界本来是访问不到的,但是现在通过一个指针却改变了。 这说明本例中结构体的内存分布和继承类对象的内存分布是一样的。 父类的成员排在前面,继承类新添加的成员排在后面。 多态对象模型: 多态本质分析小 阅读全文
posted @ 2018-09-03 21:52 周伯通789 阅读(223) 评论(0) 推荐(0)
摘要: C++的对象模型就是C++的对象在内存中是如何排布的。 C++的对象就包含了成员变量和成员函数。 回归本质: class和struct遵循相同的内存对齐规则,因此计算class占用的内存大小和struct一样。 值得思考的问题: 对象内存布局初探: 可以看出打印的都是20。 增加成员函数: 第40行 阅读全文
posted @ 2018-09-02 22:31 周伯通789 阅读(228) 评论(0) 推荐(0)
摘要: 上一节中,函数重写遇上赋值兼容出现了问题: 34、35行调用的都是父类中的print函数。 35行我们给的实参是Child对象,期望调用子类中的print函数,但是运行结果并不是这样。 函数重写回顾: 子类中重定义父类中已有的函数,就是因为父类中的函数满足不了我们的需求。 我们期望的是只要是子类对象 阅读全文
posted @ 2018-09-02 22:01 周伯通789 阅读(230) 评论(0) 推荐(0)
摘要: 父子间的赋值兼容: 子类对象兼容性实验: 第40行我们可以直接使用子类对象来初始化父类对象。这就是赋值兼容性。 47、48不会发生同名覆盖,因为rp本身就是父类类型的引用,只不过引用的对象是子类对象。47、48行会直接去父类中找add函数,所以不会报错。 51、52行同时找不到mv和带三个参数的函数 阅读全文
posted @ 2018-09-02 21:32 周伯通789 阅读(224) 评论(0) 推荐(0)
摘要: 思考: 同名成员变量: 图中的mi到底是子类的,还是从父类那里得到的? 父子间的冲突: 子类中的成员将隐藏父类中的同名成员,这叫同名覆盖。 是隐藏,是覆盖,而不是销毁,父类中的同名成员是依然存在的。我们通过作用域分辨符还是可以访问到的。 示例程序: 运行结果: 我们通过直接访问的方式访问的是子类中的 阅读全文
posted @ 2018-09-02 20:54 周伯通789 阅读(218) 评论(0) 推荐(0)
上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 57 下一页