一、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是控制类的成员变量和成员函数的访问权限的关键字,它们的作用和使用方法需要根据具体场景进行灵活运用,同时需要注意相关的注意事项。