class A
{
private:int a;
public:A(int x) :a(x){}A operator*(const A& x){return A(a*x.a);}
};int main()
{A a(2);A b = a*a;//没有问题A b = a * 2;//由于构造函数没有explicit,这里隐式转换了,也没有问题A b = 2 * a;//出问题了
}

老师讲过,一种是类的member函数,一种是non-member函数,

但我们为了封装性,尽量不适用friend,我们可以通过修改类的接口来使用数据

class A
{
private:int a;
public:A(int x) :a(x){}int get_a()const { return a; }void display(){cout << a << endl;}
};const A operator*(const A& a, const A& b)//注意这里写了const
{return A(a.get_a()*b.get_a());
}

转载于:https://www.cnblogs.com/vhyc/p/5598475.html

读书笔记_Effective_C++_条款二十四: 若所有参数皆需类型转换,请为此采用non-member函数...相关推荐

  1. 读书笔记_Effective_C++_条款十九:设计class犹如设计type

    这里初看到"class"和"type",感觉他们是说的是同一样东西,但仔细读了一下,两者在文中还是有区别的.class侧重于自定义的类,而type侧重于系统预定 ...

  2. 读书笔记_Effective_C++_条款七:为多态基类声明virtual析构函数

    严格来说,多态分为编译时多态和运行时多态,编译时多态是函数的重载,而运行时多态则是迟绑定技术,即根据基类指针或引用的实际指向来决定采取何种行动,一般来说,多态特指运行时多态.下面我们来举有关C++多态 ...

  3. 读书笔记_Effective_C++_条款三十一:将文件间的编译依存关系降至最低(第二部分)...

    下面再来看书,去理解书上说的Handler classes就简单多了,我们大概过一下. 假设我们要写一个Person类,如下: 1 class Person 2 { 3 private: 4 stri ...

  4. 【读书笔记】《视觉SLAM十四讲(高翔著)》 第13讲

    文章目录 工程文件一:dense_monocular(单目稠密地图) 工程文件二:dense_RGBD(点云地图 & 八叉树地图) 本博客的内容是本章程序编译运行方法,记录调通本章程序的过程. ...

  5. 读书笔记_CLR.via.c#第十四章_字符,字符串和文本处理

    对象初始化器 类 简单定义的类 类的构造函数 类的应用 嵌套的对象初始化器 集合初始化器 类型推理 Var myvar = 5; 匿名类型 动态查找

  6. python 拉普拉斯锐化_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化

    时间为友,记录点滴. 我们已经了解过了梯度(一阶微分)的作用,那么为什么要引入二阶微分呢?二阶微分的作用是什么? 还是看图说话: 很明显,一阶微分已经可以把轮廓辨识出来,但是,对于变化较缓的地方,一阶 ...

  7. matlab拉普拉斯算子边缘提取_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化...

    时间为友,记录点滴. 我们已经了解过了梯度(一阶微分)的作用,那么为什么要引入二阶微分呢? 二阶微分的作用是什么? 还是看图说话: 很明显,一阶微分已经可以把轮廓辨识出来,但是,对于变化较缓的地方,一 ...

  8. Visual.C#.2010从入门到精通].(Visual.C#.2010.Step.By.Step)读书笔记 属性、字段(十四)

    可以单独指定get.set的访问权限:

  9. matlab火星漫游车转向控制,OSG开发笔记(二十四):OSG漫游之平移与转向

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 本文章博客地址:https://blog.csdn.net/qq21497936/ ...

最新文章

  1. 基于OpenCV实现口罩识别
  2. 无法进入一个空框_win10电脑开机进入不了系统如何解决?
  3. MIT:睡眠不足会让你连路都走不好,但补觉还有救
  4. 外链对网站SEO优化起什么作用?
  5. 多云战略未来五大趋势分析,必看!
  6. 不定位成一个连接者,家装公司进军智能装饰的所有姿势都是错的
  7. nhibernate many-to-one 没有匹配项时的异常
  8. Win10下VS2015(WDK10)驱动开发环境配置
  9. 免费讲座:数据库工程实施中的性能保证
  10. SQL大圣之路笔记——SQL 行转列,列转行
  11. Unity 接入科大讯飞语音sdk
  12. MATLAB多算法进行图像去雾处理
  13. 机器翻译模型简介(一)
  14. 【BUG】Python3|爬虫请求得到的json中的值全是问号
  15. 【思维导图】如何做思维导图
  16. 关于零基础入门金融风控挑战赛的笔记系列
  17. 自学前端应该如何入门
  18. 计算机网络期末冲刺复习
  19. 不借助工具清除Windows7密码
  20. 【STM32学习笔记】(14)——独立看门狗(IWDG)详解

热门文章

  1. JAVA反射系列之Method,java.lang.reflect.Method的使用。
  2. NGINX 发布影响LDAP 实现的0day 缓解措施
  3. PPP 守护进程 RCE 漏洞已存在17年,可控制几乎所有的 Linux 系统
  4. 从BMW Vision iNEXT 看宝马如何进军自动驾驶 1
  5. 三分钟快速理解javascript内存管理
  6. 安装labelImg
  7. WDS部署服务所用的PXE引导文件
  8. 阿里云云中沙箱自助实验-从Gitlab数据库被删看数据备份的重要性!
  9. transform()
  10. 【简报】超棒的免费Web字体服务:Adobe Edge Web字体