关闭

结构体和类的区别

178人阅读 评论(0) 收藏 举报
分类:

1 在c++  中结构体和类的主要区别是: 结构体所有成员默认是 公有的,但是类默认是私有的。

2 结构体可以有构造函数,在使用的时候可以使用构造函数分配内存,也可以使用malloc分配内存


3 关于C语言中结构体:

a) C语言中的结构体不能为空,否则会报错
b) C语言中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的。换句话说就是C语言中的结构体只能定义成员变量,但是不能定义成员函数。然而在C++中既可以定义成员变量又可以定义成员函数, C++中的结构体和类体现了数据结构和算法的结合。

typedef  struct 
 {
	char uuid[16];
	int  type;
 }MyStruct;


typedef struct __Mes_
{
	char uuid[16];
	int  type;

	__Mes_()
	{
		memset(uuid,0,sizeof(uuid));
		type= -1;
	}

}MyMes;


 typedef list<MyStruct *> InfoList;

 typedef list<MyMes *> MesList;
 typedef list<MyMes *>::iterator MesIte;

int _tmain(int argc, _TCHAR* argv[])
{
	InfoList m_info;

	for(int i=0;i<10;i++)
	{
		MyStruct *struinfo = (MyStruct *)malloc(sizeof(MyStruct));
		struinfo->type= i;
		sprintf_s(struinfo->uuid,"%s%d","uuid=77767",i);
	//	m_info->push_back(struinfo);
		m_info.push_back(struinfo);
	}



	list<MyStruct *>::iterator it_begin = m_info.begin();
	list<MyStruct *>::iterator it_end = m_info.end();

	
	while (it_begin!= it_end)
	{
		cout<<(*it_begin)->type<<"  "<<(*it_begin)->uuid<<endl;
		it_begin++;
	}

	/*C *c = new C(666);
	delete c;*/

	MesList m_mesList;

	for(int i= 0 ;i< 10;i++)
	{
		MyMes *mes = new MyMes();
		mes->type = i;
		m_mesList.push_back(mes);
	}

	MesIte its = m_mesList.begin();
	MesIte ite = m_mesList.end();

	while(its != ite)
	{
		cout<<(*its)->type<<endl;
		its ++;
	}

	system("pause");
	return 0;
}


0
0
查看评论

结构体 struct 和 类Class 区别

c#中结构体和类结构相似,够可以包括数据成员和方法成员。   二者区别:   1,结构是指类型,在栈中分配空间;类引用类型,在堆中分配空间,栈中保存引用。    2,结构直接存储成员数据,其成员数据位于堆中;类堆中保存对象,栈中的引用指向对象。 ...
  • Iqingshuifurong
  • Iqingshuifurong
  • 2016-11-11 15:50
  • 2565

C#中结构体和类的区别

结构体和类同样能够定义字段,方法和构造函数,都能实例化对象,这样看来结构体和类的功能好像是一样的了,但是他们在数据的存储上是不一样的 C#结构体和类的区别问题:这两种数据类型的本质区别主要是各自指向的内存位置不同。传递类的时候,主要表现为是否同时改变了源对象。   1.结构体...
  • Circle__Gossoon
  • Circle__Gossoon
  • 2016-08-05 10:24
  • 1014

[C#]结构体和类的区别

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

详解C结构体、C++结构体 和 C++类的区别

先来说说C和C++中结构体的不同 a) C语言中的结构体不能为空,否则会报错 1>d:\myproject\visual studio 2013\projects\myc++\main.c(71): error C2016: C 要求一个结构或联合至少有一个成员 b) C语言中的结构体只涉及到...
  • Loving_Forever_
  • Loving_Forever_
  • 2016-05-23 18:38
  • 17243

结构体和类区别

结构体和类都是提供了数据的封装和构造  结构体主要是c语言的特色  类是c++的基本机制  结构体中的数据默认方式是public的,而类是private的  结构体不提供继承机制,类提供继承机制,实现代码复用  类可以实现多态,结构体不支持...
  • zqpgood
  • zqpgood
  • 2011-09-16 10:51
  • 16102

(1.1.12)结构体和类的区别

(1)在C++中只有两点区别:         (1)class中默认的成员访问权限是private的,而struct中则是public的。         (2)从...
  • fei20121106
  • fei20121106
  • 2015-03-12 21:04
  • 852

C语言中的结构体与C++中的类异同

C语言中的结构体与C++中的类异同
  • rl529014
  • rl529014
  • 2015-09-02 09:37
  • 1443

C# 结构体与类的区别

经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字struct.在语法上其实类和结构有着很多相似的地方.    定义类的语法...
  • liujunjie612
  • liujunjie612
  • 2017-05-03 15:02
  • 466

IOS开发语言Swift入门连载---类和结构体

IOS开发语言Swift入门连载—类和结构体类和结构体是人们构建代码所用的一种通用且灵活的构造体。为了在类和结构体中实现各种功能,我们必须要严格按照常量、变量以及函数所规定的语法规则来定义属性和添加方法。   与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文...
  • wangzi11322
  • wangzi11322
  • 2015-04-25 09:41
  • 1123

C++中结构体与类的区别

学习了C++的面向对象,最常见的和写的就是类结构体,下面主要介绍一下结构体和类的区别。 首先类是C++中面向对象独有的,但是C和C++中都有结构体,下面我们来看一下C和C++中结构体的区别。这里主要从封装、多态、继承、封装和访问权限几个方面来说。 1、C和C++中结构体的区别 (1)多态:C的...
  • gogoky
  • gogoky
  • 2016-06-19 17:55
  • 1166
    个人资料
    • 访问:16995次
    • 积分:548
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章分类