C++之 class 的三种访问修饰符( public、private、protected )

本文介绍了C++中类的公有(public)、私有(private)及受保护(protected)成员的定义与使用方法。通过实例展示了不同访问级别的成员如何被外部函数或派生类访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类的语法定义形式:

class B
{
    public:  //公有成员 

    private:  //私有成员

    protected:   //受保护成员

}:

公有(public)成员:在程序类的外部可以访问

#include<iostream>
using namespace std;
class area
{
	public:       //公有成员,外部可以访问 
		double breadth;
		double length;	
};

int main()
{
	area area1;
	area area2;
	double AREA;
	
	area1.breadth=3.45;   //通过.进行访问
	area1.length=3.1;
	
	area2.breadth=2.4;
	area2.length=5.0;
	
	AREA=area1.breadth*area1.length;
	cout << AREA <<endl;
	AREA=area2.breadth*area2.length;
	cout << AREA <<endl;
	
	return 0;
	
 } 

私有(private)成员:类的外部是不可访问的,只有类和友元函数可以访问私有成员

#include<iostream>
using namespace std;
class Box
{
	public:
		double length;
		void setwidth(double wid);
		double getwidth(void);
		
	private:
		double width;
 };
 //成员函数定义
 double Box::getwidth(void)	
 	{
	 return width;
}
 void Box::setwidth(double wid) 
 	{
	 width =wid;
}
 //程序的主函数
 int main() 
 {
 	Box box;
 	//不使用成员函数设置长度
	box.length=10.0;
	cout << "Length of box :" << box.length << endl;

	//不使用成员函数设置宽度
	//box.width=10.0;       //Error:因为width是私有的

	box.setwidth(10.0);    //使用成员函数设置宽度
	cout << "width of box :" << box.getwidth() << endl;
	return 0; 
 }

受保护(protected)成员:   保护成员在派生类(即子类)中是可访问的

#include<iostream>
using namespace std;

class Box
{
	protected:
		double width;
		
 } ;

class SmallBox:Box //smallBox 是派生类
 {
 	public:
 		void setSmallwidth(double wid);
 		double getSmallwidth(void);
 		
  };
  //子类的成员函数 
  double SmallBox::getSmallwidth(void)
  {
  	return width;
  }
  void SmallBox::setSmallwidth(double wid)
  {
  	width=wid;
  	
   } 
   //程序的主函数 
int main()
   {
   	SmallBox box;

   	//使用成员函数设置宽度

	box.setSmallwidth(5.0);

	cout << "width of box :" << box.getSmallwidth()  <<endl;

	return 0;
   }

成员和类的默认访问修饰符是 private

C++编程语言中,访问修饰符用于控制类成员的访问权限,确保数据的封装性和安全性。'public'关键字表示成员可以在程序的任何地方被访问,'private'关键字表示成员只能在定义它们的类内访问,而'protected'关键字表示成员可以在派生类中访问。下面是一个简单的类定义示例: 参考资源链接:[C++面向对象程序设计期末试卷标准答案解析](https://wenku.youkuaiyun.com/doc/64978f589aecc961cb4571c1) ```cpp class Car { public: int speed; // 公共成员,任何地方都能访问 private: int gear; // 私有成员,只能在Car类内访问 protected: int fuel; // 受保护成员,可以在派生类中访问 public: Car() : speed(0), gear(0), fuel(0) {} // 公共构造函数 void changeGear(int newGear) { gear = newGear; // 在类内部可以访问私有成员 } void startEngine() { fuel = 10; // 在类内部可以访问受保护成员 } }; class SportsCar : public Car { public: void changeGearToHigh() { changeGear(5); // 受保护成员可以在派生类中访问 } }; ``` 在这个例子中,'speed'是一个公共成员,因此可以在类的外部被访问。'gear'是私有成员,只有在Car类的内部函数中才能被访问。而'fuel'是受保护的成员,可以在继承自Car类的SportsCar类中访问。通过合理使用这些访问修饰符,可以有效地管理类的内部状态和行为,保护数据不被非法访问,同时也提供了类设计的灵活性。 参考资源链接:[C++面向对象程序设计期末试卷标准答案解析](https://wenku.youkuaiyun.com/doc/64978f589aecc961cb4571c1)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值