浅谈C++ 类(二)

  • 一、定义类相关的非成员函数
浅谈C++ 类(二)

add函数,ostream函数,istream函数均属于辅助函数,在概念是属于类,但不定义在类中。

Note:一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。

read和print函数说明:

① read和print分别接受一个各自IO类型的引用作为其参数,这是因为IO类属于不可拷贝型,只能通过引用来传递它们。而且,因为读取和写入的操作会改变流的内容,所以两个函数接受的都是普通引用,而不是常量引用。

② print函数不负责换行。

构造函数

每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊成员函数来控制其对象的初始化过程,这些函数叫做构造函数。其任务是初始化类对象的数据成员。

构造函数

① 名字与类名相同

② 构造函数没有返回类型

③ 有参数列表(可能为空)和一个函数体(可能为空)

④ 类可以包含多个构造函数

默认构造函数初始化类数据成员的规则(如图):

① 如果存在类内的初始值,用它来初始化成员。

② 否则,默认初始化该成员

浅谈C++ 类(二)

某些类不能依赖于合成的默认构造函数

① 只有当类没有声明任何构造函数时,编译器才会自动生成默认构造函数。一旦我们定义了其他的构造函数,我们需要在定义一个默认的构造函数,否则类将没有默认构造函数

② 如果类包含有内置类型或者复合类型(如数组,指针)的成员(因为这些成员不能被默认初始化),只有这些成员全都赋予了类内的初始值时,这个类才能使用合成的默认构造函数。

③ 有时编译器不能为某些类合成默认的构造函数(后边介绍无法合成默认构造函数的情况)


分享到:


相關文章: