C++/Class/Union Class — различия между версиями
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
Admin (обсуждение | вклад) м (1 версия: Импорт контента...) |
(нет различий)
|
Текущая версия на 10:25, 25 мая 2010
Содержание
An anonymous union is a union that has neither a tag name nor any objects specified in its declaration.
#include <iostream>
using namespace std;
main(void)
{
union {
int i;
char ch[2];
} ;
/* Now reference i and ch without referencing
a union name or dot or arrow operators.
*/
i = 88;
cout << i << " " << ch[0];
return 0;
}
Anonymous union
#include <iostream>
#include <string.h>
using namespace std;
int main(void){
union{
long l;
double d;
char s[4];
};
l = 100000;
cout << l << " ";
d = 123.2342;
cout << d << " ";
strcpy(s, "hi");
cout << s;
}
Unions and Classes are Related
#include <iostream>
using namespace std;
union u_type {
u_type(int a); // public by default
void showchars(void);
int i;
char ch[2];
};
u_type::u_type(int a)
{
i = a;
}
void u_type::showchars(void)
{
cout << ch[0] << " ";
cout << ch[1] << "\n";
}
main(void)
{
u_type u(1000);
u.showchars();
return 0;
}
Use union to define class
#include <iostream>
using namespace std;
union bits {
bits(double n);
void show_bits();
double d;
unsigned char c[sizeof(double)];
};
bits::bits(double n)
{
d = n;
}
void bits::show_bits()
{
int i, j;
for(j = sizeof(double)-1; j>=0; j--) {
cout << "Bit pattern in byte " << j << ": ";
for(i = 128; i; i >>= 1)
if(i & c[j]) cout << "1";
else cout << "0";
cout << endl;
}
}
int main()
{
bits ob(1991.829);
ob.show_bits();
return 0;
}