C++ 中的union、struct和class的异同
本文中写的都是它们在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<<"unionA::~unionA()"<<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<<"unionA::~unionA()"<<endl;
};
public:
char getChar(){
return m_cChar;
};
private:
void initializePara(){
m_iInt = 0;
m_cChar = 'A';
};
};
1.Union、struct 和 class 都可以定义
/*
union unionSubA: public unionA
{
};
*/
struct structSubB:public structB
{
};
class classSubC: public classC
{
};
struct structSubC:public classC
{
};
class classSubB:public structB
{
};
(to be continued )