C++类学习笔记

  1. 友元函数可以访问对象的私有部分
    友元有3种:
    • 友元函数
    • 友元类
    • 友元成员函数
  2. 友元函数不使用类限定符
  3. 友元函数即使不改变参数, 一般也不在后面加 const
  4. 对于成员函数来说, 一个操作数通过this指针隐式传递, 另一个操作数作为函数参数显式传递; 对于友元函数, 两个操作数都作为参数传递. 例如:

    Time operator+(const Time &t) const;
    friend Time operator+(const Time &t1,const Time & t2);
  5. 状态成员描述的是对象所处的状态
  6. 只接受一个参数的构造函数定义了从参数类型到类类型的转换. 如果使用关键字 explicit 限定了这种构造函数, 则它只能用于显式转换, 否则也可用于隐式转换.

    Stonewt myCat;
    myCat = 19.6;           // 如果 Stonewt(double) 是 explicit 声明的,这不合法
    myCat = Stonewt(19.6);  // 显式转换
    myCat = (Stonewt)19.6;  // 旧版本的显式转换

    然而, 当且仅当转换不存在二义性时, 才会进行这种二步转换. 也就是说, 如果这个类还定义了构造函数 Stonewt(long) , 则编译器拒绝这些语句, 可能指出: int 可被转换为 long 或 double, 因此调用存在二义性.

  7. 使用指针表示对象姓名时不会分配内存空间. 这是很久以前的知识了.

    int * arr;      // 没有内存之间, 只是一个指针
    int arr[10];    // 有内存空间
  8. 静态类成员 static 特点: 无论创建了多少对象, 程序都只创建一个静态类变量副本. 也就是说, 类的所有对象都共享同一个静态成员.

猜你喜欢

转载自www.cnblogs.com/count0/p/10926463.html