类中定义的成员函数一般默认为内联函数,即使没有明确标注inline
类中只有成员变量占用空间,成员函数不占用类的空间,因此sizeof(a)=8(64位ubuntu,vim编辑器)
class Car
{
public:
void stop()
{
cout<<"Car stop"<<endl;
}
void run()
{
cout<<"Car run"<<endl;
}
void setProperty(int price,int carNum)
{
m_price = price;
m_carNum = carNum;
}
private:
int m_price;
int m_carNum;
};
vim编辑器
vim下多屏操作:
打开多屏文件:esc->:sp + 文件名
切换屏幕:esc->ctrl+w按两下
vim下代码前显示行数:
esc->:set number
代码批量缩进:
esc->:行号1,行号2<
esc->:行号1,行号2>
或者再esc下使用=来代码重排
项目工程问题(不仅C++)
项目工程里面一个类的实现,我们一般现在该类的头文件里面去定义里面的成员变量和函数,该类的C文件或Cpp文件去实现该类成员函数。最后在main的C或Cpp文件里面去调用该类的成员函数就好了,只要包含类的头文件,编译加上类的C或Cpp文件。这样的好处是在较大型的工程里面,代码一目了然,并且该类不仅仅可供一个main去使用(如果没有类的C或Cpp文件,必须在main文件里实现类函数),增加了可移植性,是代码更加规范,冗余度降低。
封装
将数据成员和成员函数包装进类中,加上具体信息的隐藏,共同被称作封装,其结果是为一个同时带有特征和行为的数据类型。
信息隐藏是OOP最重要的功能之一,也是使用访问修饰符(public、protect、private等)的原因
隐藏信息的原因包括:
- 对模块的任何细节做的更改不会影响使用该模块的代码
- 防止用户意外修改数据
- 使模块易于访问和维护