标题:[求助看一下可以吗
只看楼主
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
 问题点数:0 回复次数:2 
[求助看一下可以吗


#include <iostream>
using namespace std;
class SuperVar
{
enum
{
character,
integer,
floating_point
}vartype;
union
{
char c;
int i;
float f;
};
public:
SuperVar(char ch);
Supervar(int ii);
Supervar(float ff);
void print();
};
SuperVar::SuperVar(char ch)
{
vartype = character;
c = ch;
}
SuperVar::SuperVar(int ii)
{
vartype = integer;
i = ii;
}
SuperVar::SuperVar(float ff)
{
vartype = floating_point;
f = ff;
}
.....
书上这么说:尽管SuperVar现在来说是安全的,但是,他的用途却有点值得怀疑,因为使用union的首要目的是为了节省空间,而增加vartype占用
了union中很多与数据有关的空间(为什么说vartype占用了uinon的空间呢?),
所以节省的空间就差不多就被抵消了。

xie xie

搜索更多相关主题的帖子: character include public 
2006-04-06 22:17
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
得分:0 
使用union的首要目的是为了节省空间,但是为了分辨char int还是float,加入了个enum vartype,  并不比用三个变量更省空间

2006-04-07 14:47
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
得分:0 

一语惊醒梦中人


2006-04-07 16:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-55662-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.119492 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved