您的位置:

C++中的访问修饰符:public、private、protected

一、public、private、protected的概念及作用

在C++中,public、private、protected是访问修饰符,用于控制类的成员变量和成员函数的访问权限,它们分别有以下作用:

  • public:公有的,可以在类的内部和外部被访问。
  • private:私有的,只能在类的内部被访问,不能在外部被访问。
  • protected:受保护的,可以在类的内部和子类中被访问,但是不能在外部被访问。

二、public、private、protected的使用方法

在类的定义中,成员变量和成员函数默认为private权限,如果希望在类的外部能够访问,则需要设置为public权限。

class Person {
private:
    int age;
    string name;
public:
    void printInfo() {
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
    }
};

在上面的代码中,age和name是私有的成员变量,printInfo()是公有的成员函数。

如果希望在类的内部和子类中能够访问,则需要设置为protected权限。

class Animal {
protected:
    int legs;
    void crawl() {
        cout << "This animal crawls with " << legs << " legs." << endl;
    }
};

class Dog : public Animal {
public:
    Dog() {
        legs = 4;
    }
    void bark() {
        cout << "woof woof!" << endl;
    }
};

在上面的代码中,legs是受保护的成员变量,crawl()是受保护的成员函数,在Dog类中通过继承Animal类来访问legs和crawl()。

三、public、private、protected的应用场景

public、private、protected的应用场景有很多,下面列举几种常见的应用场景:

  • 封装数据:将成员变量设置为private权限,通过公有的成员函数来访问和修改数据,从而保护数据的完整性和安全性。
  • 控制访问权限:将某些成员函数设置为私有的,防止外部调用,从而避免程序出现意外错误。
  • 实现继承:将基类中的成员变量和成员函数设置为protected权限,方便派生类继承。

四、public、private、protected的注意事项

使用public、private、protected时需要注意以下事项:

  • 成员变量和成员函数的访问权限只与定义的类有关,与对象无关。例如,某个对象不能访问其它对象的私有成员。
  • 友元函数和友元类可以访问类的私有成员,但是不建议过度使用。
  • 在派生类中,基类中的public和protected成员可以被继承,但是私有成员不能被继承。

五、总结

在C++中,public、private、protected是控制类的成员变量和成员函数的访问权限的关键字,它们的作用和使用方法需要根据具体场景进行灵活运用,同时需要注意相关的注意事项。