摘要:
在研究之前,先来回忆一下类/对象大小的计算: 类大小计算遵循前面学过的结构体对齐原则。 类的大小与数据成员有关与成员函数无关。 类的大小与静态数据成员无关。 虚继承对类的大小的影响 虚函数对类的大小的影响 前面三点在之前已经介绍过了,这节主要是研究第四点,而第五点会在未来进行探讨,在探讨虚继承对内存 阅读全文
摘要:
单重继承——一个派生类最多只能有一个基类。 多重继承——一个派生类可以有多个基类 ①、class 类名: 继承方式 基类1,继承方式 基类2,….{….}; ②、派生类同时继承多个基类的成员,更好的软件重用。 ③、可能会有大量的二义性,多个基类中可能包含同名变量或函数。 多重继承中解决访问歧义的方 阅读全文
摘要:
派生类对象也是基类对象。这意味着在使用基类的地方可以用派生类来替换。 当派生类以public方式继承基类时,编译器可自动执行的转换(向上转型 upcasting 安全转换)①、派生类对象指针自动转化为基类对象指针。 下面用代码进行说明: #include <iostream> #include <s 阅读全文
摘要:
构造函数 析构函数 =运算符【由于它的功能跟构造函数类似,所以也不能被继承】 构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数。 声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化(调用基类构造函数完成)。 派生类的构造函数需要给基类的构造函数传递参数。 声 阅读全文
摘要:
C++很重要的一个特征就是代码重用。在C语言中重用代码的方式就是拷贝代码、修改代码。C++可以用继承或组合的方式来重用。通过组合或继承现有的的类来创建新类,而不是重新创建它们。 关于“继承”是什么,只要是有过面向对象的编程基础的应该都很容易理解,接下来会详细对其进行介绍,而上面提到了一个“组合”,那 阅读全文
摘要:
使用map得包含map类所在的头文件#include <map> 定义一个map对象:map<string, int> mapTest;//用string作为索引,存储int对象 【四种方法】 mapTest["aaa"] = 100; mapTest.insert(map<string, int> 阅读全文
摘要:
上篇中遗留了一个小作业,就是用string中的find_first_not_of和find_last_not_of函数来实现字符串左右空格的去除,先来完成它,实现的思路是先来编写去除左空格,然后再编写去除右空格,最后去除左右空格则去调用前面两个方法既可,先来编写一个去除空格的工具类: StringU 阅读全文
摘要:
上几篇中已经实现了一个简单版的String字符串类,但是实际开发中不用我们自己实现了,学习Java的也知道有一个系统现成的用,当然强大的C++也不例外,下面就来学习一下系统定义的string是怎么用的。 string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有 阅读全文
摘要:
必须是成员函数,不能是友元函数。 没有参数(操作数是什么?)。 不能指定返回类型(其实已经指定了)。 函数原型:operator 类型名(); 下面用代码来说明,先新建工程,将上次实现的Integer类添加至项目中来: Integer.h: Integer.cpp: 测试代码: 上面的输出的写法及输 阅读全文