文章链接:https://blog.csdn.net/q_z_r_s
机器感知一个专注于SLAM、机器视觉、Linux 等相关技术文章分享的公众号
|
类内成员变量访问属性:
- 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成员和方法是单独存放的。
- 派生类的构造函数,只需写出其上一层派生类的构造函数即可,上上层的有上层来解决,此派生类不用关心。