c++的类和结构体

作者&投稿:桓树 (若有异议请与网页底部的电邮联系)
C/C++ 类和结构体的差别~

C/C++ 类和结构体的的区别:
1、结构体基本用在很多数据,需要一个结构体来封装这些数据。而类的话,是面向对象的思想,可以有很多接口让人调用,私有变量等外部不能调用,还有保护类型的变量。
2、结构体也可以被认为是一种特殊的类,它不存在任何函数,构造和析构函数也没有,而且是一个公共的的类。
3、结构体在默认情况下成员是公共的(public),类在默认情况下成员是私有的(private)。
4、C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。
5、C++结构体的继承默认是public,而c++类的继承默认是private。
6、类要加上public变成共有的才能被访问,而结构本身就是共有的可直接访问。
7、C定义结构体变量时需要加struct关键字,C++中定义结构体变量时可以不加struct关键字。

扩展资料:世界上第一种计算机高级语言是诞生于1954年的FORTRAN语言。之后出现了多种计算机高级语言。1970年,AT&T的Bell实验室的D.Ritchie和K.Thompson共同发明了C语言。研制C语言的初衷是用它编写UNIX系统程序,因此,它实际上是UNIX的“副产品”。它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植。
1971年,瑞士联邦技术学院N.Wirth教授发明了Pascal语言。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也很有研究,深知运行效率的意义。既要编程简单、正确可靠,又要运行高效、可移植,是Bjarne Stroustrup的初衷。以C为背景,以Simula思想为基础,正好符合他的设想。1979年,Bjame Sgoustrup到了Bell实验室,开始从事将C改良为带类的C(C with classes)的工作。
1983年该语言被正式命名为C++。自从C++被发明以来,它经历了3次主要的修订,每一次修订都为C++增加了新的特征并作了一些修改。第一次修订是在1985年,第二次修订是在1990年,而第三次修订发生在c++的标准化过程中。在20世纪90年代早期,人们开始为C++建立一个标准,并成立了一个ANSI和ISO(Intemational Standards Organization)国际标准化组织的联合标准化委员会。该委员会在1994年1月25曰提出了第一个标准化草案。在这个草案中,委员会在保持Stroustrup最初定义的所有特征的同时,还增加了一些新的特征。
在完成C++标准化的第一个草案后不久,发生了一件事情使得C++标准被极大地扩展了:Alexander stepanov创建了标准模板库(Standard Template Library,STL)。STL不仅功能强大,同时非常优雅,然而,它也是非常庞大的。在通过了第一个草案之后,委员会投票并通过了将STL包含到C++标准中的提议。STL对C++的扩展超出了C++的最初定义范围。虽然在标准中增加STL是个很重要的决定,但也因此延缓了C++标准化的进程。
委员会于1997年11月14日通过了该标准的最终草案,1998年,C++的ANSI/IS0标准被投入使用。通常,这个版本的C++被认为是标准C++。所有的主流C++编译器都支持这个版本的C++,包括微软的Visual C++和Borland公司的C++Builder。
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
参考资料:百度百科-C++

看到你问的问题就知道你是初学者。
首选结构体是一个值类型,而类是一个引用类型。
从你的后几句的补充上来说,你还没有型清楚什么是引用类型,什么是值类型。字与传值引用,传址引用是两码事,不要弄一块了!

所以的值类型与引用类型上,我这样给你说一下,看你是否能明白。
值类型的内存单元里是值,而引用类型单元里边是地址,地址指向了值。

比如int是值类型,int s =5;
s这个内存单元中就是5,不是地址指针。
而类则是一种引用类型!类中的并不是实际的值,而是一些指针指向了真正的值。
所以值类型就是反映的直接的数据。如:
struct M(int,int)
这个结构就是直接的值类型,它在内存中的表现是,除了结果体说明,就占两个int空间,用第一个空间里的数做第一个数值,第二个空间的数就是第一个数值。这就是结构体,也就是值类型。

值类型与引用类型说是类型。

传值引用,与址引用说的是引用方式。我给你的参数是一个值,你就按这个类计算去。如果我给的是地址,你计算时直接用的是地址。

在C#中没有传址,而是直接使用的ref参数与out参数将对象直接传入的。

传址引用与传值引用是两种不同的引用方式,与类型没有半毛钱的关系。

static是静态,实际上是开辟数据公用区,也就是说,如果你见到static,那么所有的都会引用同一地址的数据。而这个数据就是所谓的数据公共区。它和引用方式也没有半毛钱的关系。

几个概念混着来,新手新的太实在了!
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
首先一点,我不知道你从何处得来的信息,一个类加上static就是传址,不加就是传值,在C#中没有这样概念。
其次一点,我认为我所说的例子只是能让你暂时理解,但例子并不是真正的贴切。
第三,如果你真能理解,那么你以上的全部问题不是问题!说我没有回答问题,这话说得。。。。
第四,正如五楼所说,值类型是在栈中,而引用类型是堆中,但类的值是在堆栈中,也就是类的值未必全部都是堆中。
如果真的再去给你解释堆栈你未必会懂,你还以为是汇编中的栈啊?问题是汇编中有堆这个概念吗?而且对于堆和栈只是一种结构,是.net运行的基础,并不属于C#。我可以告诉你,两者概念是相同的,但使用方式与所存的内容全部两码事。
第五,如果你真的认为我没有回答问题,你可以只当我发广告,但以后绝不会借你的地儿发广告。

最后,其实个人认为你完全没有必要了解他们在内存中是如何存储的。只有在使用或是做一些IL时才会对这些东西弄的很清楚。而IL却是一种中间语言,学其中一门的C#完全没有必要懂的。不是懂汇编么——那么就是牛人了,IL也算是一种汇编,自己去看看吧!

类的主要作用体现在封装性,体现了面向对象特征,就是类对外部是透明的,用户不需要知道怎么实现的,只需要知道类的作用与接口就可以了,因此其属性是的访问权限是private。而结构体是则不具有面向对象特征,用户可以访问其属性,因此默认的访问权限是public

类定义中默认的类的访问权限是private
结构体默认的访问权限是public

其中的意思就是说当你建立class类时,即使不写private,这个类也会默认为private的私有类型,仅能被本类中的成员函数引用,类外不能调用
而建立struct结构体是,不要写public,结构体默认为public的公用类型,既可以被本类中的成员函数所引用,也可以被类 的作用域内的其它函数引用

很简单.

public class A // 一个public的类
{
}

class B // 前面没加修饰, 默认访问权限就是private
{
}

同理.
public struct A //
{
}
struct B // 默认为public
{
}

一楼的回答是在JAVA中的情况,这是本人的观点,若有冒犯请包涵。

类中的成员变量或函数若没有设置为public的公用访问权限,在类外就不可以直接引用这些成员变量或函数,如,
class A{

int a;
public:
int b;
}
void main()
{
A var;

var.a=1; //错误,a为默认的访问权限,类外不可直接引用,只能通过
//类的对外接口访问
var.b=1; //正确,b在类外可见
}
结构体实质也是一个类,它的成员默认的访问权限为public,即在外部可见,如typedef struct{
int a;
int b;
}Sqvar;
void main()
{
Sqvar var;
var.a=1;
var.b=2;
}

意思就说,当你写下面这样的代码:
class A
{
int a;//a 是private的,跟b一样
private:
int b;
}
struct
{
int a;//public
}


结构体和类的区别及面向对象的认识
区别 结构体是单独于某个具体对象的存在。是数据结构在代码中的实现。结构体是为了某些算法或者实现特定功能而存在的类似接口的这种抽象存在。类则是现实世界的实体在代码中的实现。类是有自己的属性自己的方法。共性 两者的作用都是封装。结构体也支持面向过程语言比如C。类却都是面向对象的封装。

C#中结构和类的区别
在做一个项目时,使用了较多的结构体,并且存在一些结构体的嵌套,即某结构体成员集合包含另一个结构体等,总是出现一些奇怪的错误,才终于下决心好好分析一下到底类和结构体有啥不同,虽然它们很相似,但确实有很大的不同,用不好难免出的问题会比较多,现总结一下:一、结构体和类非常相似:1,...

结构体跟类的区别是什么?
除了默认的访问限制之外,没其他区别 结构体默认是public 类默认是private 只有这两个区别,可以放心。

c#语言中,结构体和类的区别?
【从使用角度区分】1)Struct结构体是“复合类型”,其功能等同与基本的int,double的用法 ,尽管struct也可以写方法,但是不赞成这样做。因为struct的引入是为了解决“多类型”的问题 (比如一个学生记录包含id,name等不同基本类型的组合,单个int,string无法满足,所以才出现了struct)。类是组成面向对象...

C++ 什么情况下用类 什么情况下用结构体?
当然是有必要区分的。轻量级的,比如Point,Rectange这些的类型是适合使用结构体的,而对于有继承关系的或复杂的类型则应使用类。原因是结构体轻量、性能高,可以不使用new分配堆内存,使用栈内存就可以了。栈内存的使用效率性能要远好于堆内存,从这一点上来说结构是值类型的,而类一般是引用类型的。...

类与结构体的区别
结构没有无参构造函数 结构不能被继承 结构是值类型,而类是引用类型 结构在数据参数方面效率更高,简单数组的应用中成本很低 类在方法运算方面更有优势,在抽象多级别时最佳选择

c++中类就是高级的结构体,这句话理解得怎么样?
C++是在C语言的基础上增加了面向对象的理念而形成的一个新的语言,在C语言里没有类的概念,只有结构体,C语言的结构体里,只有成员,没有方法,一切都是面向过程的编程,而C++是面向对象,为了向前兼容C,结构体在C++里保留了下来,同时又作了一些改进,就是允许结构体里有方法 ,结构体毕竟不是类,...

c#语言中,结构体和类的区别?
14,每一个结构都具有无参数的隐含公共构造函数,此构造函数会将结构的所有成员初始化为其默认值。不需要重新定义这个行为。在“实例和变量”层面上,由于结构是数值类型的,因此每一个结构变量会永远的绑定到结构实例上。然而类是引用类型的,而且对象变量可引用不同的类实例,在此方面的区别,会对使用...

C++:类是不是完全代替了结构体?
如果是C++的话,两者是没太大什么区别的.就是类可以有析构函数,结构体没有.在C++中,可以把类当结构体用,但是如果把结构体当类用的话,有些地方很麻烦.比如说你要在结构体里写函数的话,就不能脱离结构体的定义{}之类的...当然如果是纯变量的话,感觉结构体更好用.但是C语言里没有类.所以这个也...

c结构体,c++结构体 和 c++类的区别
C结构体 C是面向过程的编程语言。在C语言中,结构体是用作一种数据聚合方式,将一组关联紧密的数据组成统一的数据进行操作。其功能是最基本的,在C++结构体和C++类中同样包含该功能。C++结构体 C++是面向对象的编程语言。结构体的表现形式,使用方法与C语言的结构体一致。区别:C++结构体是面向对象的,...

南召县14712927571: C++中的“类”和“结构” -
穆泳消炎: 类:类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,都指向同一段实际对象分配的内存 类有构造和析构函数 类可以继承和被继承 结构:结构是值类型在栈上分配(虽然栈的访问速度比较堆要快,但栈的资源有限放),结构的赋...

南召县14712927571: C++中 结构体和类的区别 -
穆泳消炎: C++中的结构体和类的异同: 一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象.但C中的结构体不允许有函数; 也就是说在C++当中,结构体中可以有成...

南召县14712927571: c++的类和结构体 -
穆泳消炎: 很简单.public class A // 一个public的类 { } class B // 前面没加修饰, 默认访问权限就是private { } 同理. public struct A // { } struct B // 默认为public { }

南召县14712927571: c++结构体 - 搜狗百科
穆泳消炎: 除关键字不同外(class,struct)的唯一区别是,结构在默认情况下的成员是公共的,而类在默认情况下的成员是私有的. 在C++中,结构是特殊的类.

南召县14712927571: C++中结构体和类有什么区别??? -
穆泳消炎: 在C++中只有两点区别: (1)class中默认的成员访问权限是private的,而struct中则是public的. (2)从class继承默认是private继承,而从struct继承默认是public继承. 除此这外无任何区别. 你所标志的满意回答,错了一点.C++中的结构体是允许有函数的,而在C是不允许的.

南召县14712927571: C++中结构体和类的区别 -
穆泳消炎: 结构体和类里面都可以定义成员变量和成员函数.如果在类里面这些成员全部用public修饰,则两者没有区别,但是如果用private或protected修饰,就有区别了,所以,类增加了成员访问权限的管理

南召县14712927571: 在C++中结构体与类的区别 -
穆泳消炎: 有一点小区别.结构体默认的访问权限是public 类的默认访问权限是private 其他无任何差别.

南召县14712927571: c++类结构体和函数的区别是什么? -
穆泳消炎: C++中的结构体与类的区别只在于结构体的成员默认为公有成员(public可见性),而类的成员默认为私有成员(private可见性),C++中的结构体不同于C语言里的结构体,C里的结构体只能封装一些单一的数据,不能含方法,但在C++的结构...

南召县14712927571: c++结构体和类的区别 -
穆泳消炎: 结构体的默认访问方式是public,类的成员默认访问方式是private,类在C中不兼容,结构体兼容.其他差不多

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网