Cpp_Primer_Ch2

来源:互联网 发布:大数据英语怎么说 编辑:程序博客网 时间:2024/06/06 09:53

Point 1  关于拷贝构造函数

1 拷贝构造函数式构造函数的一种。

2 系统提供默认的拷贝构造函数,但是往往不够,不如待初始化有指向动态内存的指针。

3 如下两种初始化方法相同,都是调用拷贝构造函数,

IntArray ia1 = array;

IntArray ia1(array);

 

Point2 关于函数重载和虚函数

1 相同点:都是继承相关概念,都是子类对父类相同概念的不同实现。

2差别:

重载函数必须参数类型,个数不同,不同的重载函数必须在同一个域中,这个是编译时确定的。

虚函数必须参数返回值和父类完全一致,使用c++动态绑定的特性确定到底调用哪个函数,这个是运行时确定的。

 

Point3 关于继承的子类与基类的构造函数问题

1 子类不继承基类的构造函数 (书上说这样会有更严重的问题,什么问题?)

2 子类即使没有新增成员,也需要定义构造函数,以向基类传递相关参数,比如:

inline IntArrayRc::IntArrayRc(int sz) : IntArray(sz) {}

3 子类拷贝构造函数无需定义(为什么?书上说14章-17章会解释,好期待!)

 

Point4  关于泛型设计

1  泛型设计指的事使用模板,包括模板类,模板函数。

2  模板类实例化的过程:对于模板类中的数据成员,编译器会绑定到对应的具体类型,分配内存; 对于成员函数,则是只有被程序使用的的成员函数才会被实例化。16.8节有详细介绍。

 

Point5 关于异常处理

1  一个try可以对应多个catch子句,以捕获不同的异常:

try {

        xxxx;

}

catch (string expmsg)

{  ---------------}

catch(const statsexpect &stateexps)

{------------------}

 

Ponit6 关于名字空间

1 为防止名字污染,使用名字空间定义子模块的类,及其实现:

namespace XXXXX {

    class A {

     }

}

使用名字空间方法:

using namespace XXXX;

 

2 c++ 标准库使用名字空间std。

 

Point7 关于向量vector

c++标准数组vector同传统数组异同:

1 使用任何传统数组用法。

2 vector可以动态增加大小。

3 vector并非同自己设置的数组类一样实现巨大的成员函数操作集合,而是实现最少的操作,比如size empty等,而基于其他的vector操作C++是使用泛型算法来独立提供。

 

原创粉丝点击