结构体与类的异同:
相同之处:
- C++中的结构体中可以包含函数,也可以定义public、private、protected数据成员;定义了结构体之后,可以使用结构体名来创建对象,但是C中的结构体不允许含有函数;即
- 在C++中,结构体中可以有成员变量,成员函数,可从别的类继承,也可以被别的类继承,可以含有虚函数;
不同之处:
- 结构体定义中默认情况下的成员是public,而类定义中的默认情况的成员是private的;
- 类中的非static成员函数有this指针(C++的结构体的非static成员函数也一样具有this指针),类的关键字class能作为template模板的关键字,即template<class T> class A{};而结构体的struct不可以;
C的结构体与C++结构体的区别:
- C的结构体内不允许有函数存在,C++允许有内部成员函数,并且允许该函数是虚函数;所以C的结构体是没有构造函数、析构函数和this指针的;
- C的结构体对内部成员变量的访问权限只能是public,而C++允许public、protected和private三种;
- C语言的结构体是不可以继承的,C++的结构体是可以从其他的结构体或者类继承过来的;
以上是表面的区别,实质上的区别是面向过程和面向对象编程思想的区别:C的结构体值时把数据变量给包裹起来了,并不涉及算法;而C++是把数据变量以及对这些数据变量的相关算法给封装起来,并且给对这些数据和类不同的访问权限;
C++的结构体和C++类的区别:
默认权限区别:结构体->public 类->private
- C++结构体内部成员变量成员以及成员函数默认的访问级别是public的,而C++类的内部成员变量以及成员函数的默认访问级别是private的;
- C++结构体的继承默认是public的,而C++类的继承默认是private的;
永远相信美好的事情即将发生。