类和对象是什么?

描述

前面讲的面向过程和面向对象,大家都有了基本的了解,也用struct定义了类,那么接下来咱们就用C++提供的另一个关键字class来定义类,同样的我们还是使用前面的学生结构,首先直接把struct改成class看有没有什么问题。

class Stu //定义学生结构
 {
     int id;
     int age;
     char name[10];
     void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
         id = sid;
         age = sage;
         strcpy(name, sname);
    }
     void showStuInfo()
{
         cout << id << " " << age << " " << name << endl;
    }
 };

 int main()
{
     Stu cPlus;//前面讲过在C++中可以省略,struct关键字
     cPlus.init();// error “Stu::init”: 无法访问 private 成员
     cPlus.showStuInfo();//error “Stu::showStuInfo”: 无法访问 private 成员

     return 0;
 }

编译代码会发现,有两处错误,大概的意思都是说无法访问private成员,那么什么意思呢?这就是struct和class的不同之处了:

  • struct 默认是公有(public)的:即在类的外面可以访问类里面的成员(如果没有指定权限访问限定符)
  • class 默认是私有(private)的:即在类的外面不可以访问类的成员(如果没有指定权限访问限定符)

相同点:

  • 都可以使用权限访问限定符来修改类成员,在外部的访问权限(除此之外struct和class没有任何区别)

对于上面的代码,我们可以这样修改一下在类中的最上面加上public,这样就可以在外面随意访问成员啦

Struct

如果说只想让外部能够访问成员函数,而不想让外部访问到成员变量,那么可以这样

Struct

至于protected访问限定符,是作用与派生类中的,这个后面会讲到(对于类的外部来说,和private一样)

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分