人们经常会有一种错觉,由于c语言中struct的关系,认为在使用struct关键字和class关键字定义的类之间会有深层次的区别。
事实上,唯一的区别就是默认成员访问说明符和默认派生访问说明符的区别,除此之外,再无其他不同之处。
举例说明:
class Base1{
int func1(); //默认成员访问符为private
};
struct Base2{
int func2(); //默认成员访问符为public
};
class Derived1:Base1{/* ... */}; //等价于 class Derived1:private Base1{/* ... */};
struct Derived2:Base1{/* ... */}; //等价于 struct Derived2:public Base1{/* ... */};
在面向对象的c++程序设计中,我们还是趋向于使用class,因为面向对象的思想是数据抽象、封装、继承和动态绑定;用class的好处是我们对成员进一步抽象,当然struct虽然默认访问符是public,我们还是可以显示的使用private来进行设定;但还是会趋向于class。