C++(成员属性设置为私有)

成员属性设置为私有

  • 优点1: 将所有成员属性设置为私有,可以自己控制读写权限
  • 优点2: 对于写权限,我们可以检测数据的有效性

示例:

#include <iostream>
#include <string>
using namespace std;

class Person{
public:
      //姓名设置可读可写
      void setName(string name)
      {
            m_Name=name;
      }

      string getName()
      {
            return m_Name;
      }

      //获取年龄
      int getAge()
      {
            return m_Age;
      }

      //设置年龄
      void setAge(int age)
      {
            if(age<0 || age>10)
            {
                  cout<<"年龄不符"<<endl;
                  return;
            }
            m_Age=age;
      }

      //情人设置为只写
      void setLover(string lover)
      {
            m_Lover=lover;
      }
private:
      string m_Name; //可读可写, 姓名
      int m_Age;    //只读, 年龄
      string m_Lover; //只写, 情人

};

int main() {

	Person p;
	//姓名设置
	p.setName("张三");
	cout << "姓名: " << p.getName() << endl;

	//年龄设置
	p.setAge(50);
	cout << "年龄: " << p.getAge() << endl;

	//情人设置
	p.setLover("苍井");
	//cout << "情人: " << p.m_Lover << endl;  //只写属性,不可以读取

	system("pause");

	return 0;
}

练习案例1:设计立方体类


#include <iostream>
using namespace std;

class Cube
{
public:
      //设置长
      void setL(int l)
      {
            m_L=l;
      }
      //获取长
      int getL(void)
      {
            return m_L;
      }

      //设置宽
      void setW(int w)
      {
            m_W=w;
      }
      //获取宽
      int getW(void)
      {
            return m_W;
      }

      //设置高
      void setH(int h)
      {
            m_H=h;
      }
      //获取高
      int getH(void)
      {
            return m_H;
      }

      int CalSquare()
      {
            return 2*m_L*m_W+2*m_L*m_H+2*m_W*m_H;
      }

      int CalVol()
      {
            return m_L*m_W*m_H;
      }

      bool IsSameByclass(Cube &c)
      {
            if(m_L==c.getL() && m_W==c.getW() && m_H==c.getH())
            {
                  return true;
            }
            return false;
      }
private:
      int m_L;  //长
      int m_W;  //宽
      int m_H;  //高
};

bool IsSame(Cube &c1,Cube &c2)
{
       if(c1.getL()==c2.getL() && c1.getW()==c2.getW() && c1.getH()==c2.getH())
       {
             return true;
       }
       return false;
}

int main(void)
{
      Cube c1;
      c1.setL(10);
      c1.setW(10);
      c1.setH(10);

      cout<<"立方体的面积:"<<c1.CalSquare()<<endl;
      cout<<"立方体的体积:"<<c1.CalVol()<<endl;

      Cube c2;
      c2.setL(10);
      c2.setW(10);
      c2.setH(10);

      
      if(IsSame(c1,c2))
      {
            cout<<"全局函数 立方体相等"<<endl;
      }else
      {
             cout<<"全局函数 立方体不相等"<<endl;
      }

       if(c1.IsSameByclass(c2))
      {
            cout<<"成员函数 立方体相等"<<endl;
      }else
      {
             cout<<"成员函数 立方体不相等"<<endl;
      }
           
      return 0;
}

posted @ 2020-09-01 00:16  flyingswallow  阅读(729)  评论(0编辑  收藏  举报