C++学习一段时间后,反过头来看我发现我忘了一下最基础的东西;strcut(结构体),union(联合体)我学会了类的一堆东西却忘了这两个最基础的;现在就好好的重新学习一下这里的东西;一、Class(类)类用以定义对象;默认情况下成员私有(private);成员不一定按声明顺序储存;二、strcut(结构体)结构体用以定义过程或者结构(及一堆属性的结合);默认情况下成员公有(public);成员按声明顺序在内存中储存,但不一定是连续的...
1typedef union para2{3double tmp[10];4struct 5{6double a;7double b;8double c;9double d;
10}NP;
11}NPara;
12//或者如下所示13 union para
14{
15double tmp[10];
16struct17{
18double a;
19double b;
20double c;
21double d;
22}NP;
23};
24typedef union para NPara;
2526//详细可以参看typedef的用法,本文主要讲解union的用法,不再赘述union联合体的用法: 例如利用typedef了以后,我们可以这样声明联合体对象NP...
CLI封装Union时,没有对应的类型,使用的是结构体struct,指定每个元素的偏移位置。【1】声明结构体struct时,需要显示指定为Explicit。【2】每个数据需要使用FieldOffsetAttribute指定偏移位置。C++导出函数typedef union _testStru4
{int iValLower;int iValUpper;struct {__int64 llLocation;};
}testStru4;//4.4 union类型中含有结构体
EXPORTDLL_CLASS void Struct_Union( testStru4 *pStru )
{if (NULL == pStru){return;}...
开始的话
已经好长时间没有更新了,对不起自己,更对不起我亲爱的读者,同时也对不起自己开办的这个博客平台。忙,太忙了,忙于找工作,找一份好工作,纠结于去大城市闯呢,还是回到本省的首府城市。大家都在纠结这个问题,也希望大家和我讨论讨论。别的先不说了,都工作这么长时间了,还回过头来总结union,确实有点过分,要是和大家说我一直从事于C++开发,还不懂union,大家可能还真的不信。我们每天都在总结那些看似高端的东西...
一、类成员指针
1.概念
类成员指针指向的是类的非static成员,因为类的static成员是所有类对象共有,所以static成员的指针和普通指针没有区别
2.成员变量指针
示例class test
{
public:test(){}~test(){}int pub;private:int pri;
};int main(int argc, char const *argv[])
{int test::*pi=&test::pub;test t;t.*pi=10;cout<<t.pub<<endl;return 0;
}
上述代码中pi就是个test的成员变量指针,成员变量指针的读法依旧是从右到左,...
struct所占用的内存空间是其里面所有变量占用之和;union占用的空间等于其里面单个占用最大变量空间;联合有新的数据时旧的会被覆盖,只能存一个数据,但可以有多个类型;结构中的变量不会被覆盖,里面可存多个数据,这也印证了上述说法;联合体用途为:使几个不同类型的变量共占一段内存(相互覆盖);结构体是一种构造数据类型,其用途为:把不同类型的数据组合成一个整体,相当于“类”;联合体变量中起作用的成员是最后一次存放的...
union介绍
union(共用体,联合体),所有成员占用同一段内存,修改一个成员会影响其余所有成员。
在一个“联合”内可以定义多种不同的数据类型, 一个被说明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,以达到节省空间的目的。union变量所占用的内存长度等于最长的成员的内存长度。
定义格式
union 共用体名{成员列表
};测试代码
#include <iostream>
using namespace std;template...
/** UnionFind.h* 有两种实现方式,QuickFind和QuickUnion* QuickFind:* 查找O(1)* 合并O(n)* QuickUnion:(建议使用)* 查找O(logn)可优化至O(a(n)),a(n)<5* 合并O(logn)可优化至O(a(n)),a(n)<5* Created on: 2020年2月13日* Author: LuYonglei*///由于QuickFind平均时间复杂度不理想,所以本文件只用QuickUnion来实现
//本文件基于rank实现优化
//在原有基础上实现路径压缩
#ifndef SRC...
/** UnionFind.h* 有两种实现方式,QuickFind和QuickUnion* QuickFind:* 查找O(1)* 合并O(n)* QuickUnion:(建议使用)* 查找O(logn)可优化至O(a(n)),a(n)<5* 合并O(logn)可优化至O(a(n)),a(n)<5* Created on: 2020年2月13日* Author: LuYonglei*///由于QuickFind平均时间复杂度不理想,所以本文件只用QuickUnion来实现
//本文件基于rank实现优化
//在原有基础上实现路径减半
#ifndef SRC...
// by 鸟哥 qq1833183060 匿名union
#include <iostream>
#include <string>
class Person{public:std::string name;union{int i;double s;};};
int main()
{ Person p;p.i=90;std::cout<<p.i;p.s=3.1;std::cout<<p.s;
}//输出为 903.1运行结果:903.1点赞 收藏分享文章举报鸟哥01发布了22 篇原创文章 · 获赞 5 · 访问量 1511私信
关注
共用体的用法与结构体差不多,只不过将关键字由struct变成了union。共用体使不同的类型变量存放到同一段内存单元中,所以共用体在同一时刻只能存储一个数据成员的值,共用体的大小等于最大成员的大小(结构体变量的大小是所有数据成员大小的总和)。
在程序中改变共用体的一个成员,其他成员也会随之改变。不是强制类型转换!而是因为他们的值的每一个二进制位都被新值所覆盖。 1 #include <iostream>2 #include <string>...
我试图访问Union位作为不同的数据类型.例如:typedef union {uint64_t x;uint32_t y[2];}test;test testdata;testdata.x = 0xa;printf("uint64_t: %016lx\nuint32_t: %08x %08x\n",testdata.x,testdata.y[0],testdata.y[1]);printf("Addresses:\nuint64_t: %016lx\nuint32_t: %p %p\n",&testdata.x,&testdata.y[0],&testdata.y[1]);输出是uint64_t: 000000000000000a
uint32_t: 0000000a 00000000
Addresses:
uint64_t: 00007ffe09...