class与struct-创新互联

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

站在用户的角度思考问题,与客户深入沟通,找到宁波网站设计与宁波网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、空间域名、网络空间、企业邮箱。业务覆盖宁波地区。

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

  • C++类class的具体介绍:C++类(Class)总结 - 先之 - 博客园
  • C++结构struct的具体介绍:C++ 结构体(struct)最全详解 - 一杯清酒邀明月 - 博客园
  • C语言详解结构体:C语言详解:结构体_AKA你的闺蜜的博客-博客_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定义模板类:
templateclass A {

A(T num);

};

3 小结

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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站标题:class与struct-创新互联
网页路径:http://hbruida.cn/article/ghips.html