C++面向对象高级开发(下)
一、导读
(1)泛型编程和面向对象编程分属不同的思维,
(2)由继承关系所形成的对象模型,包含this指针,vptr指针,vtbl虚表,虚机制,以及虚函数造成的多态。
二、conversion function 转换函数
(1)通过指定关键字operator,如operator type() const {} ,并在其后加上转换的目标类型后,我们就可以声明转换函数。转换函数必须是成员函数,它的声明不能指定返回类型和参数列表。
分数Fraction型转换成double型,返回类型不用写,默认为double型,没有形参。
三、non-explicit-one-argument constructor
(1)explicit这个关键字基本只出现在构造函数前面,意思是需要明确地需要调用这个构造函数才能调用,不存在暗中、自动的转换操作。
构造函数两个参数,第二个参数有个默认值为1;one-argument表示只需要一个实参就可以调用该函数
四、pointer-like classes 智能指针
(1)比指针更高级一些的。C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。
(2)智能指针在C++11版本之后提供,包含在头文件<memory>中,