热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析C/C++中结构体与类的异同及应用场景

目录structclassstruct和calss的区别C和C中struct的区别structstruct是描述一个数据结构的集合,像一周有七天,

目录

 

struct

class

struct和calss的区别

C和C++中struct的区别



 


struct

        struct是描述一个数据结构的集合,像一周有七天,你可以吧一周看成是一个结构体,然后在结构体里面定义一个数组来存放这个七天。在C语言中,定义结构体后,如果要使用该结构体定义结构体变量的话,需要在定义的前面加上struct关键字,或者通过typedef取别名,再用结构体名称进行变量定义。而在C++语言中可以直接通过结构体名称对结构体变量进行定义。在C++中包含了三种访问权限,包含public、private、protected,在C语言中只有public权限,默认没设置权限访问时是为public权限。像下面代码中的day数组的访问权限就是public。


/* 在C语言中的结构体 */
struct Week{int day[7];
};// 第一种定义方式:C语言的风格
struct Week week1; // 定义一个结构体变量// 第二种定义方式:C语言的风格
typedef struct Week{int day[7];
};Week week1; // 定义一个结构体变量/* 在C++语言中的结构体 */struct Week{int day[7];
};Week week1; // 直接用结构体名称来定义变量

class

        class类是描述对一个对象进行封装,例如一个人,他有鼻子、眼睛、嘴巴等等属性,并且他会说话、走路、眨眼睛等等方法,将这些属性全部封装成一个框,这个框叫做类。类有利于我们程序的开发和后期的维护。在C语言中没有类的概念,C++才有类,对类的定义如下代码,类包含了三种访问权限,分别是public、private、protected。默认的属性是private权限,像下面的hands属性就是private权限。

class Person{int hands; // 类属性手,默认为private权限public:Person(){} // 类构造函数~Person(){} // 类析构函数private:int mouth; // 类属性嘴巴int eye; // 类属性眼睛public:void Speaking(); // 类方法行为 void Walking(); // 类方法行为 protected:};

struct和calss的区别


类别structclass
含义定义一个数据结构集合一个的对象的封装
默认访问权限publicprivate
继承能(默认公有继承)能(默认私有继承)
包含成员函数
实现多态
定义模板参数不能

 


C和C++中struct的区别

关于C++的模板,后面小编专门写一篇来解释一下。

a84592e1a1cd4901bf64e6824ba72e81.png

关注微信公众号了解更多

 

 

 


推荐阅读
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • C语言中的结构体详解
    本文详细介绍了C语言中的结构体,包括结构体的声明、初始化、成员访问以及传参等方面的知识。 ... [详细]
  • 本题要求实现一个名为fun的函数,该函数的功能是从给定的字符串s中移除所有ASCII码为偶数值的字符,并将剩下的字符组成的新字符串存储在由t指向的数组中。 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 本文详细介绍了如何在循环双链表的指定位置插入新元素的方法,包括必要的步骤和代码示例。 ... [详细]
  • 实现系统调用
    实现系统调用一、实验环境​本次操作还是基于上次编译Linux0.11内核的实验环境进行操作。环境如下:二、实验目标​通过对上述实验原理的认识,相信 ... [详细]
  • 编译原理中的语法分析方法探讨
    本文探讨了在编译原理课程中遇到的复杂文法问题,特别是当使用SLR(1)文法时遇到的多重规约与移进冲突。文章讨论了可能的解决策略,包括递归下降解析、运算符优先级解析等,并提供了相关示例。 ... [详细]
  • 本文提供了一个使用C语言实现的顺序表区间元素删除功能的完整代码示例。该程序首先初始化一个顺序表,然后根据用户输入的数据进行插入操作,最后根据指定的区间范围删除相应的元素,并输出最终的顺序表。 ... [详细]
  • 【数据结构】堆的实现(简单易懂,超级详细!!!)
    目录1、堆的概念及结构概念规律2、堆的实现2.1结构设计2.2接口实现2.3初始化2.4堆的向下调整算法主要思想涉及问题代码实现2.5建堆思想代码实现 ... [详细]
  • 深入浅出C语言指针
    指针是C语言中极其重要的数据类型,广泛应用于各种数据结构的表示、数组和字符串的操作以及内存地址的处理。本文将通过实例详细解析指针的基本概念及其应用。 ... [详细]
  • C语言中的指针详解
    1.什么是指针C语言中指针是一种数据类型,指针是存放数据的内存单元地址。计算机系统的内存拥有大量的存储单元,每个存储单元的大小为1字节, ... [详细]
  • 本文详细介绍了在单片机编程中常用的几个C库函数,包括printf、memset、memcpy、strcpy和atoi,并提供了具体的使用示例和注意事项。 ... [详细]
  • 本文介绍了读写锁(RWMutex)的基本概念、实现原理及其在Go语言中的应用。读写锁允许多个读操作并发执行,但在写操作时确保互斥,从而提高并发性能。 ... [详细]
author-avatar
121016710_ddc112_531_661_325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有