c++写法问题

Unixb 2019-02-26 04:39:08




这是一个复数标准库里的类

为什么类里定义了成员函数之后还要定义全局函数 参数必须有类的引用 这两个作用不都一样吗 这样写是不是效率更高一点
...全文
117 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdghchj 2019-02-27
  • 打赏
  • 举报
回复
这样写只是兼顾一些C语言coder的习惯吧,多一层inline函数封装,谈不上什么效率上的区别,一样的。
Unixb 2019-02-26
  • 打赏
  • 举报
回复
其实我的意思是既然可以用类名+. 来取值 为什么还要另外做一个全局函数呢 不是浪费时间吗
pstrunner 2019-02-26
  • 打赏
  • 举报
回复
因为x.real需要访问complex的内部变量,而外面重载的operator+函数不是complex的友元函数,所以不能直接访问complex的内部变量【real】,如果要访问,可以参考下面代码:
class complex
{
public:
	complex(double r =0 , double i= 0) : re(r), im(i) {}
	~complex(void) {}
protected:
	friend inline complex operator+(const complex& x, const complex& y) {
		return complex(x.re+y.re, x.im+y.im);
	}
public:
	double re, im;
};

int main() {
	complex a(1,1), b(2,2);
	complex c = a + b;
	cout << c.re << "\t" << c.im << endl;

	return 0;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧