class与struct之间的区别

定义:

       在c语言中,struct是一种自定义的数据类型。它是由若干的“成员”组成的。每一个成员可以是一个基本数据类型或是一个用户自定义类型。其一般的定义形式为:

struct 结构名
{
  成员表列
};
       既然struct是一种数据类型,那么就肯定不能定义函数,所以在面向过程的c中,struct不含任何函数。 但是当struct进入面向对象的c++新时代时,其特性有了新的发展,struct被看成对象,可以包含函数,可以拥有构造函数,析构函数,同样拥有继承等能力。

区别:

  • 关于使用大括号初始化  

      class和struct如果定义了构造函数的话,都不能用大括号进行初始化

      如果没有定义构造函数,struct可以用大括号初始化。

      如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化。

  • 默认继承权限

      如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;

      到底默认是public继承还是private继承,取决于子类而不是基类。我的意思是,struct可以继承class,同样class也可

      以继承struct,那么默认的继承访问权限是看子类到底是用的struct还是class。如下:

       struct A{};

      class B : A{};    //private继承

      struct C : B{};  //public继承

  • 成员的默认访问权限

      class的成员默认是private权限,struct默认是public权限。

     在class地盘上,struct有了狗拿耗子多管闲事的嫌疑。但是考虑到“对C兼容”,这一点,struct被保留了下来,但是如何使用c++中的struct和c进行兼容呢,感到很疑惑。

     把C++要交换到C程序的数据在C++程序中声明成一个struct,然后根据C++中程序的语意选择继承或者聚合这个struct,然后在使用的时候就可以把这个struct封装起来传递到C中或者从C中传递到C++。

     感觉对如何进行兼容还不是很懂

 持续更新....知道弄懂

猜你喜欢

转载自blog.csdn.net/m0_37806112/article/details/80369992
今日推荐