#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)
{
std::cout << "created" << std::endl;
}
~scopedPtr()
{
delete m_Obj;
std::cout << "destoryed" << std::endl;
}
entity* getobject() { return m_Obj; }
const entity* operator->() const
{
return m_Obj;
}
};
struct vector3
{
float x, y, z;
};
int main()
{
entity e;
e.print();
entity* ptr = &e;//指针
//ptr.print();指针不能以ptr.print形式调用
ptr->print();//Entity& Entity = *ptr;等效Entity.print();//逆向引用(*ptr).print();
//ptr->x = 2;
scopedPtr Entity = new entity();
//Entity.m_Obj->print();//如果m_Obj为public即与41行代码等效
Entity.getobject()->print();//如果使用const scopedPtr Entity =new entity();则不能调用
Entity->print();//函数重载运算符 ->之后可以直接达到45行代码作用
int offset=(int) & ((vector3*)0)->z;//在数据序列中寻求偏移量
std::cout << offset << std::endl;
std::cin.get();
}
c++箭头运算符在类与结构体之间可以做的功能简介
最新推荐文章于 2024-10-09 10:07:13 发布