首页 > 软件 > c++class和struct有什么不同啊

c++class和struct有什么不同啊

软件 2022-03-01

5.请问C++的class和C里面的struct有什么区别?

在标准C++中,struct和class有两个区别: 第一:struct中的成员默认是public的,class中的默认是private的。 第二:在用模版的时候只能写template或template不能写template。 此外,如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同!简单的说就是,存取class的datamember和非virtualfunction效率和struct完全相同!不管该datamember是定义在基类还是派生类的。 如果不是为了和C兼容,C++中就不会有stru

Struct和Class的区别

首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的。毕竟不同的人偏好不同。

从语法上,在C++中(只讨论C++中)。class和struct做类型定义时只有两点区别:

(一)默认继承权限。如果不明确指定,来自class的继承按照private继承处理,来自struct的继承按照public继承处理;

(二)成员的默认访问权限。class的成员默认是private权限,struct默认是public权限。

除了这两点,class和struct基本就是一个东西。语法上没有任何其它区别。

不能因为学过C就总觉得连C++中struct和class都区别很大,下面列举的说明可能比较无聊,因为struct和class本来就是基本一样的东西,无需多说。但这些说明可能有助于澄清一些常见的关于struct和class的错误认识:

(1)都可以有成员函数;包括各类构造函数,析构函数,重载的运算符,友元类,友元结构,友元函数,虚函数,纯虚函数,静态函数;

(2)都可以有一大堆public/private/protected修饰符在里边;

(3)虽然这种风格不再被提倡,但语法上二者都可以使用大括号的方式初始化:Aa={1,2,3};不管A是个struct还是个class,前提是这个类/结构足够简单,比如所有的成员都是public的,所有的成员都是简单类型,没有显式声明的构造函数。

(4)都可以进行复杂的继承甚至多重继承,一个struct可以继承自一个class,反之亦可;一个struct可以同时继承5个class和5个struct,虽然这样做不太好。

(5)如果说class的设计需要注意OO的原则和风格,那么没任何理由说设计struct就不需要注意。

(6)再次说明,以上所有说法都是指在C++语言中,至于在C里的情况,C里是根本没有“class”,而C的struct从根本上也只是个包装数据的语法机制。

最后,作为语言的两个关键字,除去定义类型时有上述区别之外,另外还有一点点:“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。

class和struct的区别

class和struct的区别: 1、class是引用类型,struct是值类型; 2、class可以继承类、接口和被继承,struct只能继承接口,不能被继承; 3、class有默认的无参构造函数,有析构函数,struct没有默认的无参构造函数,且只能声明有参的构造函数,没有析构函数; 4、class可以使用abstract和sealed,有protected修饰符,struct不可以用abstract和sealed,没有protected修饰符; 5、class必须使用new初始化,结构可以不用new初始化; 6、class实例由垃圾回收机制来保证内存的回收处理,而struct变量使用完后

C++类class和结构体struct的区别

C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别? 最本质的一个区别就是默认的访问控制: 默认的继承访问权限 struct是public的,class是private的。 你可以写如下的代码: struct A { char a; }; struct B : A { char b; }; 这个时候B是public继承A的。 如果都将上面的struct改成cla

c++ struct和class的区别

区别: 为什么要有struct的存在呢?首先的原因自然是保持对C的兼容。原先的C代码可以不必修 改就成为合法的C++代码。第二个原因(个人愚见),是为了让struct来表示抽象的数据类 型以及抽象接口,而与class所表示的类的概念相区别。 1.C++中的结构struct和C中的struct不同,实际上C++的中的struct和class一样,在C++中 ,也可以为结构定义成员函数,惟一不同在于默认的存取权限,class中若没有指定成员的 存取权限,则默认为private成员,而struct中没有指定成员存取权限,默认是public成员 。 2.C++中的struct保持了对C中struct的

标签:CC++ 信息技术 编程语言 编程 C(编程语言)

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved.