返回

C++ OOP编程的基石:访问限定符、作用域和类对象

后端

进入C++的面向对象世界:探索类和对象

C++不同于C语言,它不仅仅是面向过程的编程范式,还包含了面向对象编程(OOP)的思想。OOP是一种将数据和行为封装在一起的编程方法,这让我们可以用一种更自然的方式去思考问题和解决问题。

类(Class)是OOP的核心概念之一,它是一个数据类型,它可以定义自己的一组数据成员和成员函数,这些数据成员和成员函数将共同完成类所要实现的功能。

对象(Object)是类的实例,它包含了类所定义的数据成员和成员函数,并可以调用这些成员函数来实现类所要实现的功能。

让我们举个例子来理解一下:

class Car {
public:
    string make;
    string model;
    int year;

    void drive() {
        cout << "The car is driving!" << endl;
    }
};

int main() {
    Car myCar; // 创建一个Car类的对象

    myCar.make = "Toyota";
    myCar.model = "Camry";
    myCar.year = 2020;

    myCar.drive(); // 调用Car类的drive()成员函数

    return 0;
}

在这个例子中,Car类定义了三个数据成员(make、model和year)和一个成员函数(drive()),其中drive()成员函数实现了让汽车行驶的功能。

我们创建了一个名为myCar的Car类的对象,并给它的数据成员make、model和year分别赋值为“Toyota”、“Camry”和2020。

最后,我们调用myCar对象的drive()成员函数,让汽车行驶。

在C++中,我们可以使用访问限定符来控制对类成员的访问权限。访问限定符有三个:

  • public:表示该成员可以在类的任何地方访问
  • protected:表示该成员可以在类及其派生类中访问
  • private:表示该成员只能在类内部访问

我们可以通过在成员声明之前加上访问限定符来指定该成员的访问权限。

class Car {
public:
    string make;
    string model;
    int year;

    void drive() {
        cout << "The car is driving!" << endl;
    }

protected:
    int mileage; // 只能在类及其派生类中访问

private:
    int engineType; // 只能在类内部访问
};

在作用域(Scope)方面,C++同样有着严谨的定义。作用域是指变量、函数和类的生存范围,在作用域之外,这些元素将无法被访问。

类的作用域从它被定义的地方开始,到它被声明的地方结束。

class Car {
public:
    string make;
    string model;
    int year;

    void drive() {
        cout << "The car is driving!" << endl;
    }
};

int main() {
    Car myCar; // 创建一个Car类的对象

    {
        Car anotherCar; // 创建另一个Car类的对象
    } // 作用域结束,anotherCar对象被销毁

    return 0;
}

在上面的例子中,myCar和anotherCar都是Car类的对象,但它们的作用域不同。myCar的作用域是从main()函数开始到main()函数结束,而anotherCar的作用域是从它被定义的地方开始到它所在的代码块结束。

在C++中,类和对象是面向对象编程的基础知识。通过理解这些概念,我们可以更加深入地理解C++的编程范式,并编写出更加健壮和可维护的代码。