struct | class | 备注 | |
成员函数 | 能 | 能 | 均有构造函数及析构函数 |
继承性 | 能 | 能 | |
多态性 | 能 | 能 | 均有虚函数 |
默认成员属性 | public | private | |
默认继承属性 | public | private | |
能否定义模板 | 否 | 能 | |
性质 | 数据结构的实现体 ,能兼容C的结构体 | 类对象的实现体 | |
初始化 | 如果没有构造函数 ,可以用大括号初始化; 如果有构造函数,不可以 用大括号进行初始化 | 一般用构造函数初始化, 如果没有构造函数,且为public 属性,可以用大括号进行初始化, private属性不可以用大括号进行初始化 | |
互相继承 | struct可以继承class | class可以继承struct |
c | c++ | 备注 | |
区 别 | C是过称化语言,struct只能作为复杂的数类型定义,struct只能定义成员变量, 不能定义成员函数,但可以使用指针来实现。 | C++新增支持面向对象思想概念中类的概念,struct具有更强大功能,不仅能和数据组织在一起,还可以与数据相关的方法组织在一起,具有与class相似的功能 | C中的struct与C++中struct的差别比C++中struct与C++中的class的差别要大 |