1. 属性和行为作为一个整体
• 属性
:类的成员变量,描述对象的状态(如长、宽、高)。
• 行为
:类的成员函数,描述对象的操作(如计算体积、表面积)。
通过类将属性和行为封装在一起,形成一个完整的对象。
2. 访问权限
C++类成员有三种访问权限:
关键字 | 说明 |
---|---|
public | 公有成员,类外可访问 |
protected | 受保护成员,派生类可访问 |
private | 私有成员,仅类内可访问 |
3. class和struct的区别
• class默认成员访问权限为private
。
• struct默认成员访问权限为public
。
• 其他用法基本一致。
4. 将成员属性设置为私有
• 推荐将属性(成员变量)设为private,通过public成员函数(如getter/setter)访问和修改,保证数据安全和封装性。
5. 立方体类设计示例
cpp
#include <iostream>
class Cube {
private:
double length; // 私有属性
double width;
double height;
public:
// 构造函数
Cube(double l, double w, double h) : length(l), width(w), height(h) {}
// 设置属性的公有方法(setter)
void setLength(double l) { length = l; }
void setWidth(double w) { width = w; }
void setHeight(double h) { height = h; }
// 获取属性的公有方法(getter)
double getLength() const { return length; }
double getWidth() const { return width; }
double getHeight() const { return height; }
// 行为:计算体积
double volume() const {
return length * width * height;
}
// 行为:计算表面积
double surfaceArea() const {
return 2 * (length * width + length * height + width * height);
}
};
int main() {
Cube c(3, 4, 5);
std::cout << "体积: " << c.volume() << std::endl;
std::cout << "表面积: " << c.surfaceArea() << std::endl;
// 通过公有方法访问和修改属性
c.setLength(6);
std::cout << "新体积: " << c.volume() << std::endl;
// 不能直接访问私有属性,下面语句会编译错误
// c.length = 10;
return 0;
}
总结
• 封装将属性和行为组合为一个整体,保护数据安全。
• 通过访问权限控制成员的可见性。
• 推荐用class并将属性私有,行为公有。
• 通过getter/setter访问和修改私有属性,体现封装思想。