C/C++中struct和class的区别

马谦马谦马谦
马谦马谦马谦
马谦马谦马谦
611
文章
12
评论
2019年1月29日16:50:36 评论

一、class和struct的区别

C++中class和struct的区别:

  1. 继承权限,struct的默认继承权限为public,class的默认继承权限为private。
  2. 访问权限,struct的默认访问权限为public,class的默认访问权限为private。

网上还流传着其他一些的区别,但总体来说最大的区别就是这两点,其他的区别或许并不常用到。

二、C和C++中struct的区别

第一、C++中的struct可以定义成员函数,但是C语言不行,C语言中的结构体可以定义函数指针。

例如以下代码:

使用GCC编译会报错:

C/C++中struct和class的区别

第二、C语言声明结构体必须要加struct,C++不用。

C语言中如果不加struct声明变量,编译器会报错:

C/C++中struct和class的区别如若不想加struct修饰,则需要使用typedef来重新定义类型。

第三、C语言中空结构体大小为0,C++中结构体大小为1。

相同的代码:

使用gccg++编译结果也不一样:

C/C++中struct和class的区别

历史上的今天
一月
29
马谦马谦马谦
  • 本文由 发表于 2019年1月29日16:50:36
  • 转载请务必保留本文链接:https://www.dyxmq.cn/program/code/c-cpp/the-difference-between-struct-and-class.html
指针和引用的区别 C/C++

指针和引用的区别

区别: 指针是一个变量类型,引用只是一个变量别名。 指针可以不用初始化,引用必须初始化。 指针可以指向空地址,引用不能指向空。 指针初始化后可以修改,引用不能修改。 其他: 引用本质上也是一个指针,内...
面试题:转换十六进制字符串到十六进制数据 C/C++

面试题:转换十六进制字符串到十六进制数据

前几天面试时候遇到的问题: 给定一个十六进制字符串"AB",转换成十六进制的整数0xab输出。 临时接到的面试通知,赶场子过去一坐下就给个题目,说实话面试了一两个星期是第一次做这方面的面试题。没有思想...
多态的原理:vptr指针和vtable虚函数表 C/C++

多态的原理:vptr指针和vtable虚函数表

多态是C++中的重要内容,也是设计模式的基础。 形成多态的几个基本条件为: 继承和虚函数 父类对象指向子类对象 多态形成的原理就是vptr指针和vtable虚函数表,当一个类中有虚函数时,编译器就会自...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: