c++ Primer Plus (第十章)

第十章

1.实现类成员函数

  • 使用域解析符 ::void Stock::update(double price)
  • 方法成员才能访问私有成员或者友元函数

2.内联方法

  • 其定义位于类声明中的函数都将自动成为内联函数,或者在类外定义,使用inluine 即 inline void Stock::update()

3.默认构造函数

  • 只有没有自己定义任何构造函数,c++才会定义一个默认的空的构造函数
  • 对于声明的头文件,最好使用 #ifndefine XXX #define XX #endif来防止被重复包含
  1. c++定义对象的语法
  • Stock stock1("maria");

5.如何在dos窗口关闭之前看到析构函数的打印

  • 将整个代码块用大括号括起来,减少对象的生命期

6.如何定义比较两个成员的成员函数

  • const Stock &topval(const Stock &s)const topval为Stock的成员函数,,参数为显式的对象引用,还有个自身隐式的对象引用,参数表里面的const表示这是一个const对象,最后的一个const表示不会修改被隐式访问的对象,最开始那个const表示是因为两个引用都是const引用,所以返回const的引用
  • 重载运算符

7.对象数组

  • Stock my[10];这种方式必须要有一个没有参数的构造函数,c++将会调用这个构造函数
  • 使用花括号来初始化数组 比如(对于花括号中没有说明的对象,将使用默认的构造函数即无参数的构造函数 )
1
2
3
4
Stock my[3]{
Stock("a"),
Stoc("b")
}

8.作用域为类的产量

  • 在c++类中,使用const int a=10;这种方法来创建常量是错误的。因为声明类并没有开辟空间,所有定义常量的方法有量
    1.在类中声明一个枚举,类声明的枚举作用域为整个类,这种方式声明枚举并不会创建数据成员,也就是所有对象都不包含枚举。枚举只是定义一个符号名称,作用域中的代码遇到这个名称·1就将其代替为对应的常量 enum{Mounth=12}

    1. 使用static const int a=10;

    9.作用域内枚举

    • enum class egg{Small};这样的类枚举将枚举变量与枚举名对应起来,避免了多个枚举中枚举变量同名的问题 egg::Small