C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合
C中的结构体和C++中结构体的不同之处:在C中的结构体只能自定义数据类型,结构体中不允许有函数,而C++中的结构体可以加入成员函数。
C++中的结构体和类的异同:
一、相同之处:结构体中可以包含函数;也可以定义public、private、protected数据成员;定义了结构体之后,可以用结构体名来创建对象。但C中的结构体不允许有函数;也就是说在C++当中,结构体中可以有成员变量,可以有成员函数,可以从别的类继承,也可以被别的类继承,可以有虚函数。
二、不同之处:结构体定义中默认情况下的成员是public,而类定义中的默认情况下的成员是private的。类中的非static成员函数有this指针,(而struct中没有是错误的,一直被误导啊,经过测试struct的成员函数一样具有this指针),类的关键字class能作为template模板的关键字 即template<class T> class A{}; 而struct不可以。
实际上,C中的结构体只涉及到数据结构,而不涉及到算法,也就是说在C中数据结构和算法是分离的,而到C++中一类或者一个结构体可以包含函数(这个函数在C++我们通常中称为成员函数),C++中的结构体和类体现了数据结构和算法的结合。
结构和类相似也有用于初始化的构造函数,代码来自C++翁凯老师的部分授课笔记。默认构造函数是指不带任何参数的构造函数。
#include <iostream>
using namespace std;
struct Y
{ float f;
int i;
Y(int a);
void print();
};
Y::Y(int a)//这个是结构的用于初始化的带参构造函数
{ i=a;
}
void Y::print()
{ cout<<"i:"<<i<<endl;
}
void main()
{
Y y0[2]= {Y(1),Y(3)}; //这是结构的初始化
y0[0].print();
y0[1].print();
//Y y1[2]= {Y(1)}; //如果是这样定义数组则会报错:因为数组仅仅初始化了一个元素,部分初始化数组的元素必须有默认构造函数。而第二个元素则因为缺少默认不带参数的构造函数而无法自动完成初始化。
}
在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。
// FileName:test.cpp
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
1、结构的构造函数和类的构造函数不同。
2、对于结构中的实例字段成员,不能在声明时赋值初始化。
3、声明了结构类型后,可以使用new运算符创建构造对象,也可以不使用new,如果不使用new,那么在初始化所有字段之前,字段将保持未赋值状态且对象不可用。
4、结构不支持继承,即一个结构不能从另一个结构或类继承,而且不能作为一个类的基类。但是,结构从基类OBJECT继承。结构也可以实现接口。
摘自csdn: http://blog.csdn.net/fuadam/archive/2008/08/04/2766616.aspx
详细阅读:http://xiaoer-1982.javaeye.com/blog/501988