C中的struct
C中的struct主要是用来描述不同数据类型而产生的自定义的数据类型,即定义数据的复合。
struct Data{
int a;
float b;
char c;
};
整个结构体中所包含的仅仅是数据,而没有函数(如要使结构体中包含对函数的操作,可以借助函数指针)
#include<stdio.h>
int Sum(int a,int b){
return a+b;
}
struct Data{
int a;
float b;
char c;
int (*Fun)(int a,int b)=Sum;
};
int main(){
Data data;
int n = data.Fun(1,2);
printf("%d\n",n);
return 0;
}
C++中的class
C++与C中的struct类似,也可以定义数据的复合,但同时还可以定义函数的复合。
class Data{
private:
int a;
float b;
char c;
public:
void Fun(); //函数声明
int Sum(int a,int b);
};
void Data::Fun(){ //函数定义
cout<<"Hello"<<endl;
}
int Data::Sum(int a,int b){
return a+b;
}
class与struct
在C的环境下,是没有class的;
在C++的环境下class与struct的区别不大,即struct也可以包含函数成员,主要的区别是访问权限的问题,在class中的默认访问权限是private,而struct是public。
所以一般既支持C又支持C++的环境下,class与struct的用法没多大差别,除非是纯C的环境(而且是有一定年代的版本下)