在重载构造函数中,const有什么影响

星辰韦 2016-11-28 05:38:28
class DepthMap
{
public:
DepthMap(int w, int h, Eigen::Matrix3f K);
DepthMap(int w, int h, const Eigen::Matrix3f& K);
};


假如要是这样定义
在写 DepthMap map(w, h, K) 的时候会调用哪个构造函数呢?
本身K就是个不会改变的固定值,const的必要何在?
...全文
174 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 2016-11-30
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
xskxzr 2016-11-29
  • 打赏
  • 举报
回复
引用 8 楼 shihengzhen101 的回复:
[quote=引用 1 楼 paschen 的回复:] k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错
我觉得也是这个样子[/quote] 你们都不试一下的吗…… 5楼都已经帮你们试了也被无视,也是醉了……
AlbertS 2016-11-29
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错
我觉得也是这个样子
paschen 版主 2016-11-29
  • 打赏
  • 举报
回复
引用 4 楼 u010417757 的回复:
[quote=引用 1 楼 paschen 的回复:] k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错
还有个小疑问,关于断言assert 要是断言为错时,程序就直接退出了?而不是重启。 也就是说,这函数就只是在编写代码的时候,用于给程序员自己查错的。 一旦程序整体写完,断言就成了程序的拖累,会调用资源减慢运行速度。 [/quote] release版断言会被替换为空,仅在debug下有效,所以不用担心
AlbertS 2016-11-29
  • 打赏
  • 举报
回复
引用 9 楼 xsklld 的回复:
[quote=引用 8 楼 shihengzhen101 的回复:] [quote=引用 1 楼 paschen 的回复:] k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错
我觉得也是这个样子[/quote] 你们都不试一下的吗…… 5楼都已经帮你们试了也被无视,也是醉了……[/quote] 大神教训的是
星辰韦 2016-11-28
  • 打赏
  • 举报
回复
引用 3 楼 fefe82 的回复:
第一个不是引用吗? 不是引用会冲突吧。
还有个小疑问,关于断言assert 要是断言为错时,程序就直接退出了?而不是重启。 也就是说,这函数就只是在编写代码的时候,用于给程序员自己查错的。 一旦程序整体写完,断言就成了程序的拖累,会调用资源减慢运行速度。
xskxzr 2016-11-28
  • 打赏
  • 举报
回复
会因冲突而出错…… 这种事随便试一下不就知道了吗,连标准都不用翻…… http://coliru.stacked-crooked.com/a/447661114693e5cd
星辰韦 2016-11-28
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错
还有个小疑问,关于断言assert 要是断言为错时,程序就直接退出了?而不是重启。 也就是说,这函数就只是在编写代码的时候,用于给程序员自己查错的。 一旦程序整体写完,断言就成了程序的拖累,会调用资源减慢运行速度。
fefe82 2016-11-28
  • 打赏
  • 举报
回复
第一个不是引用吗? 不是引用会冲突吧。
flying_music 2016-11-28
  • 打赏
  • 举报
回复
楼上说的对,如果K是个常量,会调用第一个,如果不是,会调用第二个 第二个问题是看待问题角度的问题,函数的形参加const是表明该函数不会改变这个传入的实参,是这个函数对于调用者的“”承诺“”,无论你的实参能不能变,它都不会去改变它 而你说的K是个不能变的值,那是你自己定义的问题,跟函数没关系
paschen 版主 2016-11-28
  • 打赏
  • 举报
回复
k是常量的话,调用的是第二个 如果只有第一个,传入的如果是字面常量,编译会报错

64,687

社区成员

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

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