c++箭头运算符在类与结构体之间可以做的功能简介

#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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值