C语言中class和struct的区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中class和struct的区别是啥?相关的知识,希望对你有一定的参考价值。
struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
struct没有继承,没有封装,要说封装只有初步封装。而class把数据,接口可以以三种类型封装,private,public,protected;还可以继承和派生。
它们都可以提供自己的接口函数,构造函数。一个类可以由结构继承而来。struct只能叫做数据的集合,外部可以任意访问,但是类就完成了封装,维护了数据安全,这就是面向对象的理念。
class里可以定义私有成员和保护成员而结构体里所有的成员,均为公用成员
struct想用来赋初值,它也必须满足很多的约束条件,这些条件实际上就是让struct更体现出一种数据机构而不是类的特性。那为什么在上面仅仅将struct改成class,就不能用了呢?其实问题恰巧是之前所讲的——访问控制!如果将struct改成class的时候,访问控制由public变为private了,那当然就不能用来赋初值了。加上一个public,class也是能用的,和struct毫无区别。
从上面的区别,可以看出,struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。
struct没有继承,没有封装,封装只有初步得封装。而class把数据接口以三种类型封装,private,public,protected,还可以继承和派生。但是它们都可以提供自己接口函数,构造函数。一个类可以由结构继承而来。struct只能叫做数据集合,外部可以任意访问,但是类就完成了封装,维护了数据的安全
struct的成员默认权限是public,而class的成员默认权限是private
struct的默认继承方式为public,而class的默认继承为private
使用上来说没有太大的区别,不过一个是面向对象的语言,使用更加的方便和简洁
class和struct如果定义了构造函数的话,都不能用大括号进行初始化
如果没有定义构造函数,struct可以用大括号初始化
如果没有定义构造函数,且所有成员变量全是public的话,可以用大括号初始化
c++语言中class是啥意思
在C++ 语言中class是定义类的关键字,C++中也可以使用struct定义类。两者区别是,用class定义的类,如果数据成员或成员函数没有说明则默认为private(私有)的,而用struct定义的,默认为public(公共)的。
示例 #include using namespace std; class C public: int getAge() const return age; void setAge( int n ) age = n; private: int age; ; int main() C c; c.setAge( 22 ); cout << "My age: " << c.getAge() << endl; return 0;
作为面向对象程序设计的基础,掌握class的基本结构和特性是十分重要的。 参考技术A 这个是申明一个类的关键字,类是讲数据和行为绑在一起的一种数据结构。本回答被提问者采纳 参考技术B class是c++中申明一个类的关键字。 参考技术C 建立一个类。和C中的结构体差不多 参考技术D 谢谢
以上是关于C语言中class和struct的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章
C语言结构体中struct和typedef struct有啥区别?