成员属性设置为私有

岩壁的格桑花 2019-09-15 01:04:37
#include<iostream> #include<string> using namespace std; //成员属性设置为私有,好处: //1.自己控制读写权限; //2.写可以检测数据的有效性 class Person { public: void setName(string name)//设置姓名 { m_Name=name; } string getName()//获取姓名 { return m_Name; } int getAge()//获取年龄 年龄可读可写, //如果想修改年龄,则年龄在0-150 { //int m_age=0; return m_Age; } int setAge(int age) { if (age<0||age>150) { cout << "您输入有误" << endl; } m_Age=age; } private: string m_Name;//可读可写 int m_Age;//只读 string m_Lover;//只写 }; int main() { Person p; p.setName("张三"); cout<<"姓名为 "<<p.getName()<<endl; p.setAge(16); cout<<"年龄为 "<< p.getAge()<<endl; return 0; }
...全文
188 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-09-17
  • 打赏
  • 举报
回复
一开始学这样写没啥问题
月凉西厢 2019-09-17
  • 打赏
  • 举报
回复
C++使用Getter/Setter 可能并没有你想象的那么好。C/C++是一门比较讲究性能的语言,而Setter/Getter会消耗不少的性能,,就像上面你这种写法,getter中的return XXX和Setter中的参数传入都设置到变量或结构(或类实例)的拷贝。结构/类的拷贝可能还会调用到构造函数或拷贝构造函数。如果拷贝时是浅拷贝,但这个类的包含了堆内存的的申请并在析构函数中释放。同一块堆内存会不会被多次释放呢?等等这些问题都是需要考虑的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧