C++面向对象:详解public、protected与private的用法与继承特性

5星 · 超过95%的资源 7 下载量 6 浏览量 更新于2024-08-31 收藏 55KB PDF 举报
深入理解C++中public、protected及private用法是C++面向对象编程中的关键概念,这三个关键字用于控制类成员的访问权限。它们的存在确保了封装性和信息隐藏,是类设计中的核心原则。 首先,让我们探讨public和private的作用。在C++中,public成员是对外部代码(即类外部)公开的,允许直接访问和操作,例如创建类的对象时可以直接赋值或调用其公共方法。另一方面,private成员则是私有的,只允许类内的函数(包括成员函数和友元函数)访问,外部代码无法直接访问这些内部细节,实现了数据的封装,防止意外修改。 接下来是protected成员,它们介于public和private之间。保护成员同样对外部代码不可见,但在派生类中却是可访问的。这种设计允许子类继承并重用父类的某些特性,同时保持一定的封装性,防止过度暴露内部结构。 以下是一段示例代码,展示了这三个关键字的实际应用: ```cpp class A { public: int a; // 公共成员,类外可访问 A() { a1 = 1; a2 = 2; a3 = 3; a = 4; } void fun() { cout << a << endl; // 正确,通过对象直接访问 cout << a1 << endl; // 正确,类内访问 cout << a2 << endl; // 正确,类内访问 cout << a3 << endl; // 错误,类外不能访问 } public: int a1; // 公共成员 protected: int a2; // 保护成员,派生类可访问 private: int a3; // 私有成员,仅类内访问 }; int main() { A itema; itema.a = 10; // 正确,公共成员 itema.a1 = 20; // 正确,公共成员 itema.a2 = 30; // 错误,不能直接访问保护成员 itema.a3 = 40; // 错误,不能直接访问私有成员 system("pause"); return 0; } 在继承中,有三种类型的继承方式: 1. Public继承:父类的public和protected成员在子类中变为public,而private成员保持不变,外部依然无法访问。 2. Protected继承:子类可以访问父类的protected成员,但外部代码仍不能直接访问。 3. Private继承:子类完全继承父类的私有成员,其他成员保持原样,外部代码对它们是不可见的。 理解并熟练运用public、protected和private关键字,有助于编写更安全、可维护的C++面向对象代码。在设计类时,应权衡信息暴露的必要性和封装性,确保代码的可读性和可扩展性。