class与struct

在C++中class与struct之间区别不大,两者有很大的相似性。保留struct是为了向下兼容,所以C++中保留了很多C的东西。

有关结构体和类具体可以参考以下链接:

1.struct

  • C中,struct包含不同数据类型的数据结构体
  • C++中,struct做了扩充,与class的功能类似:
    • 可以包含成员函数
    • 可以实现继承
    • 可以实现多态

2.struct与class的区别

  • 定义语法关键字不同(struct/class)
  • struct是值类型,class是引用类型,
  • struct存储在栈中,但其中定义的引用类型是存储在堆中的
  • struct中字段不能赋初始值,class中字段没有影响
  • struct不能定义无参数的构造方法,且在有参构造函数中必须为所有字段和属性赋值
  • struct中有参构造方法不会覆盖默认的无参构造方法,即可以new无参的结构,class中有参构造方法会覆盖默认的无参构造方法,即无法调用默认无参构造方法,因此在class中最好定义一个无参构造方法,防止new创建对象失败。
  • struct不能定义析构方法,class可以
  • struct可以继承接口不可以继承class,class既可以继承接口,又可以继承class
     
  • 默认访问权限。struct作为数据结构的实现体,数据的默认访问是public;class作为对象的实现体,默认的访问是private。虽然struct作为数据结构的实现体可以像class一样使用,但是在这里依旧将struct里的变量称为数据,class里的变量称为成员。
  • 默认的继承访问权不同。class默认是private,struct默认是public。即class默认继承方式是private继承,而struct是public继承。所以类定义时要求指定继承方式。
  • class关键字可用于定义模板参数,类似于typename,但struct关键字不可用于定义模板参数。如class定义模板类:
template<class T>

class A {

A(T num);

};

3 小结

struct是一种特殊的值类型,栈的空间小,访问速度快,struct适用于字段、属性较少,作为一种组合类型使用,而class作为一种面向对象拓展的类型使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值