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