0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

类和对象是什么?

汽车电子技术 来源:C语言Plus 作者:Maye426 2023-02-27 15:36 次阅读

前面讲的面向过程和面向对象,大家都有了基本的了解,也用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,这样就可以在外面随意访问成员啦

图片

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

图片

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

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

    关注

    22

    文章

    2104

    浏览量

    73485
  • Class
    +关注

    关注

    0

    文章

    53

    浏览量

    19712
  • Struct
    +关注

    关注

    0

    文章

    31

    浏览量

    10857
收藏 人收藏

    评论

    相关推荐

    OLE对象是什么

    [OPTIONS]中OLE对象是什么?
    发表于 07-15 16:29

    关于LabVIEW 及其对象使用的疑问

    各位大神,我一直有个关于LabVIEW中使用的问题。。。。当我建好一个之后,直接将其拖到一个VI的程序框图中,相当于一个对象,在这个VI中我可以随便操作这个
    发表于 11-23 22:20

    JAVA和C++区别

    。 8 字符串 c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用对象(strinR和stringBuffer)来实现的,这些对象是
    发表于 10-10 14:50

    3分钟看懂Python面向对象

    Python虽然是解释型语言,但从设计之初就已经是一门面向对象的语言,对于Python来说一切皆为对象。正因为如此,在Python中创建一个对象是很容易的,当然如果习惯面向过程或者
    发表于 06-08 14:20

    VEE对象是否支持阿拉伯字符?

    大家好,有人知道VEE对象是否支持阿拉伯字符?我假设他们是Microsoft Windows应用程序的一部分,但如果有人有阿拉伯语运行的VEE应用程序的屏幕截图,我真的很感激!有人设法让VEE对象
    发表于 04-02 06:17

    LabVIEW面向对象的ActorFramework(1)

    领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统
    发表于 02-10 14:09

    对象分配内存错误怎么办

    请大神帮忙,万分感谢!!!操作系统:ucosIII 芯片:STM32F103我的建立比较多。对象是指针CCarriage*gCar;分配内存语句:gCar = new CCarriage
    发表于 05-25 09:51

    对象_实验2

    c++面向对象课程实验指导书题目_对象
    发表于 01-14 16:24 0次下载

    Java教程之零点起飞学Java的对象资料说明

    对象是进行面向对象编程的基础。是具有相同属性特征和行为规则的多个对象的一种统一描述,对象是
    发表于 02-20 10:41 14次下载
    Java教程之零点起飞学Java的<b class='flag-5'>类</b>与<b class='flag-5'>对象</b>资料说明

    Java实验:对象的扩展

    Java实验:对象的扩展
    发表于 07-08 15:36 20次下载
    Java实验:<b class='flag-5'>类</b>和<b class='flag-5'>对象</b>的扩展

    Labview面向对象编程快速入门教程

    在面向对象编程中, 用来表示通用特性。 例如,假设有一个描述汽车的中定义了各种汽车的通用特性。对象是
    发表于 07-31 08:00 82次下载
    Labview面向<b class='flag-5'>对象</b>编程快速入门教程

    什么是不可变对象 不可变对象存储可以抵御哪些威胁

    新建的对象。 基本数据类型的包装以及String对象都是不可变对象。 不可变对象和可变
    的头像 发表于 09-19 11:44 2536次阅读

    Python中的对象详解

    Python 是一种面向对象的编程语言,它支持对象是一种用户自定义的数据类型,用于定义对象的属性和方法。
    的头像 发表于 04-20 16:53 1056次阅读

    Objects:为对象提供对象技术

    Objects 对象简介 IRIS 通过以下对象提供对象技术: %Library.RegisteredObject 、 %Library
    的头像 发表于 09-20 14:14 382次阅读
    Objects:为<b class='flag-5'>对象</b><b class='flag-5'>类</b>提供<b class='flag-5'>对象</b>技术

    SystemC TLM中的接口

    SystemC TLM中的接口 在SystemC TLM中,接口是一个C++的抽象。抽象中的所有方法都是用“=0”标识表示的纯虚函数。C++不允许创建抽象对象,因为抽象
    的头像 发表于 11-02 15:54 782次阅读