临县网站建设,软件开发需求分析模板,搜索推广专员,深圳注册公司代理机构union的作用基本是它里面的变量都用了同一块内存#xff0c;跟起了别名一样#xff0c;类型不一样的别名。 基本用法#xff1a; struct Union{union {float a;int b;};};Union u;u.a 2.0f;std::cout u.a , u.b std::endl…union的作用基本是它里面的变量都用了同一块内存跟起了别名一样类型不一样的别名。 基本用法 struct Union{union {float a;int b;};};Union u;u.a 2.0f;std::cout u.a , u.b std::endl;常规用法见结构体
#include iostream
#include string
#include vector
#include algorithm /* sort*/
#include functional /*std::greaterint()*/
#include game.hstruct Vector2 {float x, y;
};struct Vector4
{/*因使用union方法故先注释掉*/// float x, y, z, w;//Vector2 GetA() { /*这样的方法将会创建一个新的对象我们不想这么做*/// return Vector2(); //}/*一种方法*//*Vector2 GetA() { return *(Vector2*)x;}*//*但是如果使用Union的话可能就要好的多*/union {// float x, y, z, w; /*如果这么写的话是不行的因为四个值用的同一块内存*//*解决办法是用结构体这里union和struct都没有名字他们都是匿名函数*/struct {float x, y, z, w;};/*这里再向union添加另一个结构体显然他们是占用同一块内存的这里就体现了Union的用处*/struct {Vector2 a, b;};};
};void PrintVector2(const Vector2 vector2) {std::cout vector2.x vector2.y std::endl;
}int main() {Vector4 vector { 1.0f, 2.0f, 3.0f, 4.0f };std::cout vector.x std::endl; /*可以看到还是可以访问x的*/PrintVector2(vector.a);PrintVector2(vector.b);vector.z 500.0f;PrintVector2(vector.a);PrintVector2(vector.b);struct Union{union {float a;int b;};};Union u;u.a 2.0f;std::cout u.a , u.b std::endl;/*测试game*/// game::runGame();std::cin.get();
}