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++
    +关注

    关注

    21

    文章

    2066

    浏览量

    72900
  • Class
    +关注

    关注

    0

    文章

    52

    浏览量

    19524
  • Struct
    +关注

    关注

    0

    文章

    29

    浏览量

    10817
收藏 人收藏

    评论

    相关推荐

    鸿蒙TypeScript 开发学习第9天:【TypeScript Number】

    TypeScript 与 JavaScript 类似,支持 Number 对象。 Number 对象是原始数值的包装对象
    的头像 发表于 04-07 18:02 438次阅读
    鸿蒙TypeScript 开发学习第9天:【TypeScript Number】

    鸿蒙TypeScript学习第17天:【对象

    对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象
    的头像 发表于 04-15 15:33 346次阅读
    鸿蒙TypeScript学习第17天:【<b class='flag-5'>对象</b>】

    对象分配内存错误怎么办

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

    深入理解Java虚拟机-判断对象存活状态

    深入理解Java虚拟机之判断对象是否存活 我们知道Java虚拟机中对象的存储位置在堆上,所以GC回收主要也就是在堆上进行的,那么垃圾收集器在进行对象回收的时候肯定不能随便收集,必须要判断对象
    发表于 11-29 01:06 1016次阅读

    下一个可能制裁对象是中芯国际

    继叙利亚之后,美国再次对中国实施了精确打击; 2.老杳:对中兴被美国禁售芯片七年的几点判断; 3.赛迪智库:美对我下一个可能的制裁对象是中芯国际; 4.被认为对美国国家安全造成威胁 华为紧缩在美开支
    的头像 发表于 06-02 11:08 1.6w次阅读

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

    类与对象是进行面向对象编程的基础。类是具有相同属性特征和行为规则的多个对象的一种统一描述,对象是对类的实例化。在Java语言中,类是一种最基本的复合数据类型,是组成Java程序的基本要
    发表于 02-20 10:41 14次下载
    Java教程之零点起飞学Java的类与<b class='flag-5'>对象</b>资料说明

    大数据的重点对象是什么

    随着大数据的快速发展,就像计算机和互联网一样,大数据很有可能是新一轮的技术革命。
    发表于 12-11 14:38 2230次阅读

    产业互联网的浪潮里淘金

    产业互联网的说法是基于改造对象的不同延伸出来的,同消费互联网时代的改造对象是C端用户不同,这个时代的改造对象是C端的供给侧B端。
    发表于 01-09 14:17 374次阅读

    一文详解Java对象的内存布局

    这个实例对象是以怎样的形态存在内存中的? 一个Object对象在内存中占用多大? 对象中的属性是如何在内存中分配的?
    发表于 09-30 14:38 1073次阅读
    一文详解Java<b class='flag-5'>对象</b>的内存布局

    薄膜在线污点检测仪的检测对象是什么

    导读:由于传统的人工肉眼检测速度慢、精度低、易于疲劳,不能满足现代生产要求。赛默斐视薄膜在线污点检测仪能在线对生产过程中产生的表面缺陷瑕疵进行高速、精确的检测,显示和识别薄膜表面上的所有表面缺陷。能检测分别出直径 0.01mm-2mm的脏污点、条纹、破损、边缘裂缝、皱折、暗斑、亮斑、边缘破损、黑点疵点、毛发,蚊虫,等常见表面缺陷。 赛默斐视薄膜在线污点检测仪检测原理: 赛默斐视薄膜在线污点检测仪整体采用工业CCD相机在线
    发表于 03-19 15:58 319次阅读

    在线瑕疵检测仪的检测对象是什么

    导读:由于生产工艺及现场环境等影响,容易造成薄膜表面出现黑点、晶点、麻点、破洞、线条、褶皱、蚊虫、划伤等瑕疵,不仅影响严重薄膜产品的外观,更是给企业带来经济损失。只有在生产过程中及时检出薄膜表面的瑕疵缺陷,从生产的根源来消除瑕疵,控制和提高薄膜的表面质量,才是*行之有效的办法。 传统的检测方法如人工目视抽检速度慢、精度低、易疲劳已经远远不能满足现在工业生产中高速、高分辨率和无损只能检测的要求。基于CCD的
    发表于 04-08 15:36 212次阅读

    详解JVM的垃圾回收算法和垃圾回收器

    JVM 垃圾回收机制是对堆中没有使用的对象进行回收,那么判断对象是否“存活”就至关重要。在判断对象是否“存活”的方法中,我们会介绍引用计数算法和可达性分析法。
    的头像 发表于 03-29 13:55 1250次阅读
    详解JVM的垃圾回收算法和垃圾回收器

    python的深入使用

    可变对象是指,一个对象在不改变其引用的前提下,可以修改其所指向的地址中的值* 不可变对象是指,一个对象引用指向的值是不能修改的
    的头像 发表于 02-16 15:49 354次阅读
    python的深入使用

    Python中的类和对象详解

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

    java中的equals是什么意思

    在Java中,equals是一个用于比较对象是否相等的方法。该方法来自于Object类,所有的Java类都继承了该方法。equals方法的默认行为是比较对象的内存地址,即判断两个对象是否是同一个
    的头像 发表于 11-17 17:07 1472次阅读