摘要:
应用背景: 例如有下面的函数模板,它用来获取两个变量中较大的一个: 请读者注意a > b这条语句,>能够用来比较 int、float、char 等基本类型数据的大小,但是却不能用来比较结构体变量、对象以及数组的大小,因为我们并没有针对结构体、类和数组重载>。另外,该函数模板虽然可以用于指针,但比较的 阅读全文
摘要:
Java中的泛型编程可以极大的提升编程的效率,比如在android中查找一个控件的ID:标准写法为: 或者: 因为同为查询控件ID,所以上面的写法可以采用泛型编程精简为: 这样在下次使用的时候就可以写成这样: C++中也有类似的东西,不过名字变了,叫模板(template)。 一.函数模板 例:交换 阅读全文
摘要:
运算符重载的格式为: 一.在类里面实例运行符重载 运行结果: 6.7 + 9.5i 1.运算符重载其实就是定义一个函数,在函数体内实现想要的功能,当用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数实现的,它本质上是函数重载。 2.operator是关键字,专门用于定义重载运算 阅读全文
摘要:
使用 string 类需要包含头文件<string>,下面的例子介绍了几种定义 string 变量(对象)的方法: 一.length() 返回字符串长度 注意: 与C不同,string末尾没有'\0'字符,所以length返回的是字符串的真实长度,而不是长度+1 二.c_str() 转换为C风格的字 阅读全文
摘要:
一个类中可以有 public、protected、private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员。现在,我们来介绍一种例外情况——友元(friend)。借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数 阅读全文
摘要:
typeid可用来判断类型是否相等: 例如有下面的定义: 阅读全文
摘要:
一.基本语法 在C++中,可以将虚函数声明为纯虚函数,语法格式为: 纯虚函数没有函数体,只有函数声明,在虚函数声明的结尾加上=0,表明此函数为纯虚函数。 最后的=0并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”。 包含纯虚函数的类称为抽象类(Abstract Class)。 阅读全文
摘要:
一.虚函数使用的注意事项 1.只需要在虚函数的声明处加上 virtual 关键字,函数定义处可以加也可以不加。 2.为了方便,你可以只将基类中的函数声明为虚函数,这样所有子类中具有遮蔽(覆盖)关系的同名函数都将自动成为虚函数。 3. 当在基类中定义了虚函数时,如果派生类没有定义新的函数来遮蔽此函数, 阅读全文
摘要:
一.产生背景 先看下面的例子: 运行结果: 王志刚今年23岁了,是个无业游民。赵宏佳今年45岁了,是个无业游民。 我们直观上认为,如果指针指向了派生类对象,那么就应该使用派生类的成员变量和成员函数,这符合人们的思维习惯。但是本例的运行结果却告诉我们,当基类指针 p 指向派生类 Teacher 的对象 阅读全文
摘要:
一.产生背景 先看下列一份代码: 运行: 编译器报错:“reference to 'm_a' is ambiguous”,说明m_a变量指代不清,编译器不知道该为哪个m_a赋值,事实上,B和C均继承于A,所以B和C中均有m_a这个变量,此时在D中为m_a赋值,就搞不清楚究竟是给B中的m_a赋值还是给 阅读全文