【C++面向对象程序设计(第2版)】第一天小结

类内成员变量访问属性:

  • private:
  •     只可在所定义的类内访问,类的实例,即类外不可访问;派生类的成员函数在类内也不可访问。
  • public:
  •     随意访问,没有限制。
  • protected:
  •     派生类成员函数可以在类内访问,类外也不可访问。

细节问题:

  • 类内声明函数并实现,默认情况下是inline的。
  • 同一个类定义多个对象时,每个对象占用的存储空间只取决于该类中数据成员所占用的空间,类中函数的代码是共用的,只有一份。之所以访问相同的代码,成员函数输出不同的结果,原因是,C++中有一个this指针,用来指向不同的对象,当对象调用成员函数时,this指针就指向调用它的对象,即访问调用者的数据。
  • 当子类继承了父类之后,如果父类没有使用构造函数,那么子类就也必须写一个构造函数,即使是空也要写,例如
class father {
    ...
    father(...){}
    ...
}

class son : father{
    ...
    son : father(传入实参) {可以为空}
    ...
}
  • 带参数构造函数在定义对象时必须给定参数,例如
   father obj(...);
  • 另一种参数初始化构造函数写法如下:
father :: father(type val1, tpye val2 ...): var1(val1),var2

(val2)...{}
  • 一般形式如下:
类名::构造函数名([参数表])[:成员初始化表]
{
    [构造函数体]
}
  • 无需给出实参的构造函数称为默认构造函数,一个类只能有一个默认构造函数(default constructor),如果用户未定义,则系统自动提供一个默认构造函数,即空的构造函数。
  • 如果希望各对象中的某个数据成员称为同类各个对象共享,只需在此数据成员前添加static关键字即可。其初始化须在main函数外层初始化。加了static前缀的函数称为静态函数,对其访问使用classname::func,static修饰的变量函数有一种全局感觉。因为静态函数没有this指针,所以无法访问非静态成员。static成员和方法是单独存放的。
  • 派生类的构造函数,只需写出其上一层派生类的构造函数即可,上上层的有上层来解决,此派生类不用关心。

猜你喜欢

转载自blog.csdn.net/q_z_r_s/article/details/82764778