C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

快乐的码农

以前在学习C语言的时候,用的多的数据结构就是结构体[struct],学习了C++后发现还有一个叫做类的东西[class]。但是这两个有什么区别吗?如何恰当的使用两者,今天就来简单那的说说。

问答

  1. struct能包含成员函数吗?能!
  2. struct能继承吗?能!
  3. struct能实现多态吗?能!!!

C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

大家懂了吗

访问权限

最基本的区别就是默认的访问权限!

struct默认是public的

class默认是private的

举个栗子

比如以下代码

struct A

{

int m_nNum;

};

struct B : A

{

QString m_strFile;

};

上面例子中,B是public继承A的。如果写成下面:

class A

{

int m_nNum;

};

class B : A

{

QString m_strFile;

};

这样的话B就编程private继承A了。这个就是默认访问权限的意思。

其实说到底继承去啊年取决于子类而非基类!

C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

混合继承

比如下面简单那的例子

struct A

{

int m_nNum;

};

class B : A

{

QString m_strFile;

};

struct C:B

{

};

上面:B是private继承A,C是public继承B!!!

记住一句话就是了:

struct作为数据结构的实现体,它默认的数据访问控制是public的,而class作为对象的实现体,它默认的成员变量访问控制是private的!

模板参数

模板参数中,可以使用class定义,但是不能用struct来定义!

赋值

给一个结构赋值:

struct A

{

char c1;

int n2;

float db3;

};

A a = {'a',1,3.14};

这样可以直接给赋值,没有任何错误。但是要是将struct换成class就不行了。为什么呢?大家想一想。

其实就是因为class中有默认的构造函数、析构函数等。可以试着在上面结构中添加一个构造函数,会发现,上面的赋值语句失败了!所以真理很明确了!

我们平时使用{}来对结构赋值,是一个初始化列表形式进行初始化,这样简单的初始化只能用在简单的数据结构上,如果加上构造函数,那么struct会表现出一种对象的特性,因此继续赋值会失效!

当我们在一个结构中加入构造函数后。类的内部结构发生了变化了,加入一个普通函数已久可以,普通函数其实也可以理解成一种对数据结构的一种算法,这样并不打破原本数据的特性!

重点

struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体!

C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

遇见你

后记

【鹅卵石爱编程】分享Linux,Windows下C/C++,编程相关的技术,坚持不定时进行技术支出,希望大家能够喜欢。

你的关注点赞就是对我最大的支持,感谢各位粉一直以来的支持。

C++中结构体和类的区别(c的结构体和c++结构体有什么区别)

感谢

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论