C++类成员的访问控制

C++使用privatepublicprotected关键字约束类成员的可访问范围(可见性)。

  • private
    指定私有成员,说明定义的函数或变量只能在该类的成员函数内使用,其他对成员变量的访问必须通过成员函数进行;
  • public
    定义了类的公用接口,可以在任何地方被访问;
  • protected
    指定了被保护的成员变量和函数,这类函数只能在类的成员函数内、子类或友元中被访问。

    class 类名
    {
        private:
            私有属性和函数
        public:
            公有属性和函数
        protected:
            保护属性和函数
    };
    

三种关键字出现的次数和先后顺序没有限制。在类中不使用上述关键字指定可访问范围的属性和函数默认为private

C++struct也是一种类,只不过在类中不使用上述关键字指定可访问范围的属性和函数默认为public

/***************************************
 * visit_scope.cpp                     *
 *                                     *
 * C++类的访问权限                     *
 ***************************************/
#include <string>
#include <iostream>

class CEmployee
{
  std::string name;

public:
  int salary;

public:
  void SetName(std::string _name){name = _name;}
  std::string GetName(){return name;}
  int AverageSalary(CEmployee e1, CEmployee e2);
};

int CEmployee::AverageSalary(CEmployee e1, CEmployee e2)
{
  return (e1.salary + e2.salary) / 2;
}

struct Loc
{
  float lat;
  float lon;
  float alt;

  void TellLat(){std::cout<<"lat: "<<lat<<std::endl;}
  void TellLon(){std::cout<<"lon: "<<lon<<std::endl;}
  void TellAlt(){std::cout<<"alt: "<<alt<<std::endl;}
};

int main()
{
  CEmployee e;
  /*e.name = "Tom";*///错误,默认为私有,不能访问私有成员
  e.SetName("Tom");
  e.salary = 5000;
  CEmployee e1;
  e1.SetName("Jim");
  e1.salary = 6000;
  std::cout<<"e和e1的平均工资为"<<e.AverageSalary(e,e1)<<std::endl;

  Loc loc;
  loc.lat = 10;//正确,struct默认为公有,可以访问
  loc.lon = 10;
  loc.alt = 10;

  loc.TellLat();
  loc.TellLon();
  loc.TellAlt();

  return 0;
}

类成员访问控制

参考文献

  1. Bjarne Stroustrup著,裘宗燕译. C++程序设计语言(特别版).机械工业出版社 2009
  2. https://www.coursera.org/course/pkupop
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值