operator->的mark

在他们的打麻将声音中,由于operator+又想起了operator->,总的来说,得返回个资源的指针

#pragma once
#ifndef HEAD_H
#define HEAD_H
#include<string>
class FooA {
private:
	std::string data;
public:
	FooA(const std::string &s):data(s){}
	virtual ~FooA(){}
	//interface
	std::string* operator->() {
		return &data;
	}
};
class FooB {
private:
	std::string* data;
public:
	FooB(const std::string&s):data(new std::string(s)){}
	~FooB() { delete data; }
	//interface
	std::string* operator->() {
		return data;
	}
};
#endif

无论是自身是否直接持有资源,返回指针才能愉快的亮出函数勒

#include"Head.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using std::string;
using std::for_each;
using std::vector;
using std::cout;
using std::endl;
using std::ends;
using std::cbegin;
using std::cend;
using std::begin;
using std::end;
int main()
{
	FooA a("abc");
	cout << a->substr() << endl;
	FooB b("bcd");
	cout << b->substr() << endl;
}

Zr
2020-01-07
于西岭雪山归来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值