结构体与类的异同:

相同之处:
  1. C++中的结构体中可以包含函数,也可以定义public、private、protected数据成员;定义了结构体之后,可以使用结构体名来创建对象,但是C中的结构体不允许含有函数;即
  2. 在C++中,结构体中可以有成员变量,成员函数,可从别的类继承,也可以被别的类继承,可以含有虚函数
     
不同之处:
  1. 结构体定义中默认情况下的成员是public,而类定义中的默认情况的成员是private的;
  2. 类中的非static成员函数有this指针(C++的结构体的非static成员函数也一样具有this指针),类的关键字class能作为template模板的关键字,即template<class T> class A{};而结构体的struct不可以;

 

C的结构体与C++结构体的区别:

  1. C的结构体内不允许有函数存在,C++允许有内部成员函数,并且允许该函数是虚函数;所以C的结构体是没有构造函数、析构函数和this指针的;
  2. C的结构体对内部成员变量的访问权限只能是public,而C++允许public、protected和private三种;
  3. C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的;

以上是表面的区别,实质上的区别是面向过程面向对象编程思想的区别:C的结构体值时把数据变量给包裹起来了,并不涉及算法;而C++是把数据变量以及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限;

 

C++的结构体和C++类的区别:

默认权限区别:结构体->public 类->private

  1. C++结构体内部成员变量成员以及成员函数默认的访问级别是public的,而C++类的内部成员变量以及成员函数的默认访问级别是private的;
  2. C++结构体的继承默认是public的,而C++类的继承默认是private的

永远相信美好的事情即将发生。