C++ 中的union、struct和class的异同
来源:互联网 发布:淘宝怎么退定金 编辑:程序博客网 时间:2024/05/17 09:34
C++ 中的union、struct和class的异同
Version 1.1
本文中写的都是它们在C++中的异同,而非C中的,因为在C中无论是union还是stuct都没有操作,也没有访问控制的概念。
这几天工作不是很忙,就顺手把Bruce Eckel的Thinking in C++ Volume 1 翻着浏览一下。
看到Chapter 7中关于union这一节,竟然发现union也有类似于class的用法,咦,以前看的时候怎么就没有发现呢,是不是以前仅仅是走马观花?也或许这本书的确不错,它的精华我不可能第一次阅读的时候就能够全部体会到,因而每读一次就有新的体会。
Union、struct 和 class 的确是有很多类似的用法。这儿权当是读书笔记,记下来吧。
这里,还是举例说明吧。
先定义如下三个抽象类型。
union unionA
{
int m_iInt;
char m_cChar;
int getInt(){
initializePara();
};
public:
unionA(){
initializePara();
};
~unionA(){
cout<<"unionA::~unionA()"<<endl;
};
public:
char getChar(){
return m_cChar;
};
private:
void initializePara(){
m_iInt = 0;
m_cChar = 'A';
};
};
struct structB
{
int m_iInt;
char m_cChar;
int getInt(){
initializePara();
};
public:
structB (){
initializePara();
};
~ structB (){
cout<<" structB::~ structB()"<<endl;
};
public:
char getChar(){
return m_cChar;
};
private:
void initializePara(){
m_iInt = 0;
m_cChar = 'A';
};
};
class classC
{
int m_iInt;
char m_cChar;
int getInt(){
initializePara();
};
public:
classC (){
initializePara();
};
~ classC (){
cout<<"classC::~ classC ()"<<endl;
};
public:
char getChar(){
return m_cChar;
};
private:
void initializePara(){
m_iInt = 0;
m_cChar = 'A';
};
};
1.Union、struct 和 class 都可以像对象一样,定义成员数据和成员函数。
2.Union 和 struct 默认的成员是public的,而class 默认的是 private。
3.Union 既不能够继承,也不能被继承,而struct 和 class 都可以用来继承和被继承。
如下例:
/* // error
class classSubA: public unionA
{
};
*/
/* // error
union unionSubA: public unionA
{
};
*/
struct structSubB:public structB
{
};
class classSubC: public classC
{
};
struct structSubC:public classC
{
};
class classSubB:public structB
{
};
4.空间不同,如上例,int m_iInt; 和 char m_cChar;共用相同的空间,其空间大小为他们中较大的一个(在32位机中,int 为 4个字节,char 为一个字节)。而class 和 struct 则不是的。
以上是对这3个的异同做一定的总结。
(完)
关于本文:本文版本为Version 1.1,完成于2005.03.12。你可以在我的个人主页和BLOG上找到本文原文。如果有什么意见或建议,望不吝赐教,谢谢!J
主页:http://zijinshi.cn
BLOG:http://blog.csdn.net/zijinshi,
Email:frank@zijinshi.cn
Frank
2005.03.11 晚 - 2005.03.12
- C++ 中的union、struct和class的异同
- class,struct与union异同
- struct 和 class的异同?
- class和struct 的异同
- struct和class的异同
- typedef struct和 struct 在C和C++中的异同
- c语言和c++中的struct和typedef struct的异同
- class与struct的异同
- class struct union 的区别
- struct class union的区别
- C和C++中struct和typedef struct的异同
- C和C++中struct和typedef struct的异同
- C和C++中struct和typedef struct的异同
- C/C++的Struct和Union简介
- c语言的union和struct
- C/C++中 union/struct/class的内存对齐
- C++和C中的struct和class
- c 和 c++中的 struct 和 class
- Win32.Heathen.asm
- Java 5.0 新增 Autoboxing & Unboxing 功能的简单示例
- 如何将excel导入到sql server中
- Win32.Hiv.asm
- jsp与javascript结合用以处理confirm确认达到传递参数到另一个页面的作用
- C++ 中的union、struct和class的异同
- Win32.Hortiga.asm
- 第一次亲密接触
- Win32.Idele.asm
- Win32.Infinite.asm
- Win32.Jimmy.asm
- Win32_Halen.asm
- 如何制作MSI文件
- 总结!