一、class和struct的区别

C++中class和struct的区别:

  1. 继承权限,struct的默认继承权限为public,class的默认继承权限为private。
  2. 访问权限,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;
}

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

最后修改:2019 年 12 月 29 日
如果觉得我的文章对你有用,请随意赞赏