C++ primer 学习笔记(五)

charpter7 类

定义抽象数据类型

  • 类中this一般指这个对象,类型为指向类 类型非常量 的常量指针,即 Struct_name *const // 常量指针,指向对象为非常量
  • 如何转为指向常量的指针,在类成员函数参数列表之后添加const即可,该函数为常量成员函数,无法修改对象的内容。
  • 常量对象,常量对象的引用或指针只能调用常量成员函数。
  • 定义一个返回this对象的函数 函数的返回类型必须为 对象的引用 如 Sales_data &,返回语句为return *this

    构造函数

  • 当需要默认构造函数时,一般写为 类名()=default
  • 构造函数初始值列表 类名(形参) : 类成员(参数名),类成员(参数名)...){}示例 ` Sales_data(const std::string &s,unsigned n,double p) : bookNo(s),units_sold(n),revenue(p*n){ }

    友元

  • 类允许其他类或者函数访问它的非公有成员,方法是零其他类或者函数成为他的友元。在类中添加友元函数声明即可,friend 函数名
  • 友元函数的声明与类本身放置在同一个头文件中

    类的其他特性

  • 内联函数 : 当函数在类内部定义时,默认为内联函数。在外部定义时需添加inline
  • 友元类: 某个类访问其他类中的私有成员,必须声明为友元类。如A访问B,则在B中声明friend class A,友元关系不具有传递性
  • 友元函数: 某个类的成员函数访问其他类中的私有成员,必须声明为友元函数。如类A中func1访问类B,则在B中声明friend A::func1.
  • 友元声明的函数或类必须在使用之前显示声明

    再探构造函数

  • 构造函数的初始值必不可少: 如果成员是const,或者引用必须通过构造函数初始值列表为成员提供处置。
  • 默认构造函数 类名 对象名,注意,不需要括号。

    类的静态成员

  • 关键词static ,静态数据成员的类型可以是常量,引用,指针。静态成员函数不能声明为const以及包含this指针
  • 使用静态成员 类名::静态成员或者与普通一样使用