箭头运算符
例子1:常用的箭头指向类中的参数或函数
#include <iostream>
#include <string>
class Entity
{
public:
int x;
public:
void Print() const { std::cout << "Hello!" << std::endl; }
};
int main()
{
Entity e; //创建对象
e.Print();
Entity* ptr = &e; //指向它的指针
//(*ptr).Print();
ptr->Print();
ptr->x = 2; //用箭头访问x,然后将它设置为想要的任何值
std::cin.get();
}
例子2:指针指向函数
#include <iostream>
#include <string>
class Entity
{
public:
int x;
public:
void Print() const { std::cout << "Hello!" << std::endl; }
};
//智能指针的类
class ScopedPtr
{
private:
Entity* m_Obj;
public:
ScopedPtr(Entity* entity)
:m_Obj(entity)
{
}
~ScopedPtr()
{
delete m_Obj;
}
Entity* operator -> ()
{
return m_Obj;
}
const Entity* operator -> () const
{
return m_Obj;
}
};
int main()
{
const ScopedPtr entity = new Entity();
entity->Print();
std::cin.get();
}
例子3:获取内存中某个成员变量的偏移量
#include <iostream>
#include <string>
struct Vector3 //结构体
{
float x, y, z; //浮点数每一个有四个字节
};
int main()
{
//假设想找出这个变量y在内存中的偏移量
int offset = (int)&((Vector3*)nullptr)->y;
std::cout << offset << std::endl;
std::cin.get();
}