一、 class 和 struct 的区别
C++中 class 和 struct 的区别:
- 继承权限,struct 的默认继承权限为 public,class 的默认继承权限为 private 。
- 访问权限,struct 的默认访问权限为 public,class 的默认访问权限为 private 。
网上还流传着其他一些的区别,但总体来说最大的区别就是这两点,其他的区别或许并不常用到。
二、 C 和 C++中 struct 的区别
第一、 C++中的 struct 可以定义成员函数,但是 C 语言不行,C 语言中的结构体可以定义函数指针。
例如以下代码:
1 2 3 4 5 6 7 |
struct stu_st { void print(); }; int main() { return 0; } |
使用 GCC 编译会报错:
第二、 C 语言声明结构体必须要加 struct,C++不用。
C 语言中如果不加 struct 声明变量,编译器会报错:
如若不想加 struct 修饰,则需要使用
typedef
来重新定义类型。
第三、 C 语言中空结构体大小为 0,C++中结构体大小为 1 。
相同的代码:
1 2 3 4 5 6 7 8 9 |
#include "stdio.h" struct stu_st { }; int main() { printf("%u\n", (unsigned int)sizeof(struct stu_st)); return 0; } |
使用 gcc
和 g++
编译结果也不一样:
评论