现在的位置: 首页 > 综合 > 正文

struct和class之间的最大不同是什么

2019年11月13日 综合 ⁄ 共 807字 ⁄ 字号 评论关闭

  struct和class的区别

  类: 引用类型(位于栈上面的指针(引用)和位于堆上的实体对象)

  结构:值类型(实例直接位于栈中)

  在C++中我们可以看到struct和class的区别并不是很大,两者之间有很大的相似性。那么为什么还要保留struct,这是因为C++是向下兼容的,因此C++中保留了很多C的东西。

  一.首先看一下C中struct

  1.struct的定义

  struct A{int a;int b;//成员列表注意:因为struct是一种数据类型,那么就肯定不能定义函数,所以在面向c的过程中,struct不能包含任何函数。否则编译器会报错

  面向过程的编程认为,数据和数据操作是分开的。然而当struct进入面向对象的c++时,其特性也有了新发展,就拿上面的错误函数来说,在c++中就能运行,因为在c++中认为数据和数据对象是一个整体,不应该分开,这就是struct在c和c++两个时代的差别。

  在C++中struct得到了很大的扩充:

  1.struct可以包括成员函数

  2.struct可以实现继承

  3.struct可以实现多态

  二.strcut和class的区别

  1.默认的继承访问权。class默认的是private,strcut默认的是public。

  struct A{int a;};struct B: A{int b;};

  例如上边的代码,strcut B就是公有继承(public)的struct A。如果将strcut变为 class 那么将会是私有继承(private)这里就不做展示了。所以我们在写类的时候都会显示的写出是公有继承还是私有继承

  当然,到底默认是public继承还是private继承,取决于子类而不是基类。我的意思是,struct可以继承class,同样class也可以继承struct,那么默认的继承访问权限是看子类到底是用的struct还是class。

抱歉!评论已关闭.