C++笔记1--(Boolan)

构造函数初始值列表

    1、如果没有在构造函数的初始值列表中显示地初始化成员,则该成员将在将在构造函数体之前执行默认初始化。

    2、如果成员是const或者是引用,或者属于某种未提供默认构造函数的类类型,我们必须通过构造函数初始值列表为这些成员提供初始值。

    3、在很多类中,初始化和赋值的区别事关底层效率的问题:前者直接初始化数据成员,后者则先初始化再赋值。

#ifndef 经常用于避免在一个程序中多次包含一个文件。

内联函数可以避免函数调用的开销,将函数制定为内联函数(inline),通常就是将它在每个调用点上“内联地”展开。

内联说明只是向编译器发出的一个请求,编译器可以选择忽略这个请求。一般来说,内联机制用于优化规模较小、流程直接、频繁调用的函数。

C++中,使用访问说明符加强类的封装性:

      定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接口。

      定义在private说明符之后的成员可以被类的成员函数访问,但是不能被使用该类的代码访问,private部分封装了(隐藏了)类的实现细节。

      类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元friend),只需要增加一条以friend、关键字开始的函数声明语句即可。一般来说,最好在类定义开始或者结束前的位置集中声明友元。

      当const在函数名前面的时候修饰的是函数返回值,在函数名后面表示是常成员函数,该函数不能修改对象内的任何成员,只能发生读操作,不能发生写操作。

      在调用成员函数的时候编译器会将对象自身的地址作为隐藏参数传递给函数,在const成员函数中,既不能改变this所指向的对象,也不能改变this所保存的地址,this的类型是一个指向const类型对象的const指针。

参数传递:值传递(passed by value)和引用传递(passed by reference)

         值传递中,实参的值被拷贝给形参,函数对形参做的所有操作都不会影响实参。指针形参可以间接地访问它所指向的对象,所以可以通过指针修改它所指对象的值

         引用传递,允许函数改变实参的值。

        拷贝大的类类型对象或者容器对象比较低效,甚至有的类类型(包括IO类型)根本就不支持拷贝操作。当某种类型不支持拷贝操作时,函数只能通过引用形参访问该类型对象。

    C++中,建议使用引用类型的形参替代指针。

    如果函数无须改变引用形参的值,最好将其声明为常量引用。

函数返回值传递:return by value和return by reference(to const)

      return by value,返回值将被拷贝到调用点。

      return by reference,返回结果不会被拷贝,若函数不改变返回值,最好在返回类型前加const。

      函数完成后,它所占用的存储空间也随之被释放掉,局部变量的引用和指针将指向不再有效的内存区域。因此,不要返回局部对象的引用或指针。

重载运算

重载输入输出(<<和>>)运算符时,必须是普通的非成员函数,而不能是类的成员函数。

如果我们想提供含有类对象的混合类型表达式,则重载运算符必须定义成非成员函数。

当我们把运算符定义成成员函数时,它的左侧运算对象必须是运算符所属类的一个对象。

你可能感兴趣的:(C++笔记1--(Boolan))