为了账号安全,请及时绑定邮箱和手机立即绑定

封装函数有什么特别意义?为什么叫封装函数?

为什么把setName()、getName()叫做封装函数?什么情况下这么称呼

正在回答

2 回答

因为封装好了之后,对数据的操作才是有规有矩的。如果不封装,完全可能出现这样的情况:

class Student {
public:
  string stuName;
};

int main() {
  Student stu;
  stu.stuName = 3;
  return 0;
}

这样明显是不合法的(把数字付给字符串),但是这样在编译的时候不会出错,只有在运行的时候才能体现出来。

但是如果封装了的话,就会是这样:

class Student {
public:
  void setName(string name){        //设置stuName的值;
    stuName = name;
  }
  string getName() {        //获取stuName的值;
    return stuName;
  }
private:
  string stuName;        //因为stuName是private,所以下面的实例对象不能直接访问
};

int main() {
  Student stu;
  stu.setName(3);        
  //这里传入3是会报错的,因为在定义这个函数的时候就指明了传入的必须是一个string类型。
  stu.setName("小明");
  cout << stu.getName() << endl;        
  //在获取属性的时候也不用担心对属性值产生影响,这样无疑是非常安全的。
  return 0;
}

就是这样,觉得有用就采纳吧!

0 回复 有任何疑惑可以回复我~
#1

灯心人 提问者

非常感谢!
2016-06-12 回复 有任何疑惑可以回复我~

p1.className不应该是one吗?ChinaGDG

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(上)
  • 参与学习       103436    人
  • 解答问题       701    个

封装--面向对象的基石,本教程力求帮助小伙伴们即学即会

进入课程

封装函数有什么特别意义?为什么叫封装函数?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信