C++ 类是面向对象编程(OOP)中的一个核心概念,它封装了数据(称为属性或数据成员)和操作这些数据的方法(称为成员函数或方法)。类的定义方式以及成员(包括数据成员和成员函数)的访问权限是C++编程中非常重要的部分。
类的定义方式
C++中的类使用class关键字进行定义。类定义通常包括:
类名:标识类的名称。
成员变量(也称为数据成员):类中存储的数据。
成员函数:类中定义的函数,可以访问类的成员变量。
访问权限修饰符:public、protected、private,用于控制类成员的访问权限。
数据成员
数据成员是类中定义的变量,用于存储类的状态信息。数据成员可以是任何基本数据类型(如int、float等)或用户定义的类型(如其他类)。
成员函数
成员函数是类中定义的函数,用于执行对类的数据成员的操作。成员函数可以访问类的所有成员(取决于它们的访问权限),并且它们可以带有参数和返回值。成员函数可以在类定义内部或外部定义,但如果在外部定义,则必须使用作用域解析运算符(::)来指定函数所属的类。
访问权限(public, private, protected)
public:任何外部代码都可以访问public成员。通常,public成员包括构造函数、析构函数、赋值操作符和类接口中用于与其他类交互的成员函数。
private:private成员只能被类本身的成员函数、友元函数或友元类访问。私有成员通常用于隐藏类的内部实现细节,保护类的数据不被外部直接访问。
protected:protected成员与private成员类似,但它们还可以被派生类(即子类)的成员函数访问。这允许基类中的某些成员在派生类中被重用或修改,而不需要暴露给外部代码。
示例:
class Rectangle {
public:
// 构造函数
Rectangle(int width, int height) : width_(width), height_(height) {}
// public成员函数
int getArea() const { return width_ * height_; }
private:
// private数据成员
int width_;
int height_;
protected:
// 在这个例子中,没有使用protected成员,但你可以根据需要添加
// 例如,如果你想让派生类能够访问或修改某个数据成员
};
int main() {
Rectangle rect(5, 10);
std::cout << "Area: " << rect.getArea() << std::endl; // 正确:访问public成员函数
// std::cout << rect.width_ << std::endl; // 错误:无法访问private数据成员
return 0;
}
在这个例子中,Rectangle类有一个public构造函数和两个private数据成员(width_和height_),以及一个public成员函数(getArea)来计算并返回矩形的面积。注意,尽管我们可以在类外部创建Rectangle对象并调用其public成员函数,但我们无法直接访问其private数据成员。