C和C++中的结构体对比
2013-12-25 11:43
190 查看
在C语言中,结构体里的内容只能是内置类型或其const类型以及结构体、枚举、共用体,而且不能被赋初值,即使是const类型的量。结构体中的所有成员对外都是可见的。
像这样都是可以满足的
而C++中的结构体其实就相当于一个类,只不过这个类是public的。不单类是public的,里面的成员都是对外可见的。成员除了涵盖C中的类型,最主要的是支持函数。
例如:
调用:cout << t.a << " " << t.b << " " << t.fun() << endl;
所以,假如有人在C++中将结构体写成了这样,别惊讶,你就将它看成一个类就行了。只不过这个类比较特殊,没有任何封装特性,所有的成员都是对外可见的。
像这样都是可以满足的
typedef struct tagTest { struct t { char ch; }; const int i; float f; enum tagDate { year, month, day }date; union tagUinon { int ia; char ch; }ui; }Test;
而C++中的结构体其实就相当于一个类,只不过这个类是public的。不单类是public的,里面的成员都是对外可见的。成员除了涵盖C中的类型,最主要的是支持函数。
例如:
typedef struct tagTest { int a; float b; tagTest() { a = 1; b = 0.2; } float fun() { return a + b; } }Test;
调用:cout << t.a << " " << t.b << " " << t.fun() << endl;
所以,假如有人在C++中将结构体写成了这样,别惊讶,你就将它看成一个类就行了。只不过这个类比较特殊,没有任何封装特性,所有的成员都是对外可见的。
相关文章推荐
- C++中Reference与指针(Pointer)的使用对比
- C++和Java的语法对比手册
- C语言和C++的区别与对比
- C++ 中结构体的继承关系
- C++与QML文档之间传复杂数据结构(如结构体)
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- [C,C++] - 妙用0元素数组实现大小可变结构体
- 【c++程序】结构体链表
- 【Java笔记】C++与Java的对比
- C++中的结构体
- c++初级 之 vector与list对比
- C/C++中的结构体对齐问题(内存对齐)
- C#与C++数据类型比较及结构体转换[整理]
- C++与C#对比学习:类初始化
- C++ 结构体struct的使用
- C和C++中结构体的不同之处
- C/C++中结构体(struct)知识点强化(一)
- C/C++结构体的存储分配
- C# Socket 入门5 UPD 结构体 与 C++ 通信
- 对结构体vector进行sort(C++)