C++ 中的union、struct和class的异同

王朝c/c++·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

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 )

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航