C++编写的ATM自动取款机模拟程序里的有一行代码:ATM(consumer& cn):cnsm(cn){},这是啥意思啊?

幸运的菇凉 2015-04-22 05:06:20
class consumer;

class ATM // ATM取款机
{
public:
ATM(consumer& cn):cnsm(cn){}/这行代码是啥意思呢? void welcome(); // 登陆界面
bool check_passwd(char n[],char pwd[]); // 核对密码
void change_passwd(); // 修改密码
void fetchmoney(); // 取款
void information(); // 查询信息
void exitATM(); // 退出系统
void functionshow(); // 功能界面
void lock(); // 锁机
private:
int times; // 记录密码输入次数
consumer& cnsm;

};

...全文
456 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
此后三年 2015-04-23
  • 打赏
  • 举报
回复
引用 10 楼 yangyunzhao 的回复:
就是构造函数,不是拷贝构造函数 http://blog.csdn.net/lwbeyond/article/details/6202256
谁规定一定要加const了? 不想和你争论, 实在不行你自己写代码测试一下拷贝构造函数。
yangyunzhao 2015-04-23
  • 打赏
  • 举报
回复
ATM(const ATM & o) 这个才是拷贝构造函数
yangyunzhao 2015-04-23
  • 打赏
  • 举报
回复
引用 9 楼 a30037338 的回复:
[quote=引用 8 楼 xiaohuh421 的回复:] 都错了。 这里仅是引用类型变量的初始化。 没有构造函数调用。 引用相当于指针, 这点想必大家都知道。
1.这里是拷贝构造函数 2. 拷贝构造函数和构造函数都可以理解为类型转换函数 3.构造函数不关心类内成员被赋了什么样的初值,不管成员变量是引用,指针,类,int。。。。。。 4.指针和引用虽然很相似, 但还是有很多区别。 5.如果你还这样认为, 我觉得你有必要在学习下c++基本语法 [/quote] 就是构造函数,不是拷贝构造函数 http://blog.csdn.net/lwbeyond/article/details/6202256
此后三年 2015-04-23
  • 打赏
  • 举报
回复
引用 8 楼 xiaohuh421 的回复:
都错了。 这里仅是引用类型变量的初始化。 没有构造函数调用。 引用相当于指针, 这点想必大家都知道。
1.这里是拷贝构造函数 2. 拷贝构造函数和构造函数都可以理解为类型转换函数 3.构造函数不关心类内成员被赋了什么样的初值,不管成员变量是引用,指针,类,int。。。。。。 4.指针和引用虽然很相似, 但还是有很多区别。 5.如果你还这样认为, 我觉得你有必要在学习下c++基本语法
xiaohuh421 2015-04-23
  • 打赏
  • 举报
回复
引用 7 楼 a30037338 的回复:
[quote=引用 4 楼 yangyunzhao 的回复:] 拷贝构造函数, ATM(consumer& cn):cnsm(cn){}/ 不是拷贝构造函数,只是构造函数
这怎么不是拷贝构造, 没看到是consumer& cn。[/quote] 都错了。 这里仅是引用类型变量的初始化。 没有构造函数调用。 引用相当于指针, 这点想必大家都知道。
此后三年 2015-04-23
  • 打赏
  • 举报
回复
引用 4 楼 yangyunzhao 的回复:
拷贝构造函数, ATM(consumer& cn):cnsm(cn){}/ 不是拷贝构造函数,只是构造函数
这怎么不是拷贝构造, 没看到是consumer& cn。
此后三年 2015-04-23
  • 打赏
  • 举报
回复
引用 13 楼 xiaohuh421 的回复:
引用 13 楼 xiaohuh421 的回复:
我错了, 确实是构造函数,不是拷贝构造函数, ATM(consumer& cn):cnsm(cn){} 看错了 你们是对的
xiaohuh421 2015-04-23
  • 打赏
  • 举报
回复
引用 9 楼 a30037338 的回复:
[quote=引用 8 楼 xiaohuh421 的回复:] 都错了。 这里仅是引用类型变量的初始化。 没有构造函数调用。 引用相当于指针, 这点想必大家都知道。
1.这里是拷贝构造函数 2. 拷贝构造函数和构造函数都可以理解为类型转换函数 3.构造函数不关心类内成员被赋了什么样的初值,不管成员变量是引用,指针,类,int。。。。。。 4.指针和引用虽然很相似, 但还是有很多区别。 5.如果你还这样认为, 我觉得你有必要在学习下c++基本语法 [/quote] 好吧, 貌似你说的跟我说的不是一个东西 ATM(consumer& cn) 它肯定是一个普通构造函数无疑, 但参数不是当前类类型,不属于复制构造函数。 而我前面说的是cnsm(cn)这个东西,仅是初始化没有任何构造函数调用。 而我说引用相当于指针, 不是说等于。 我的本意是说引用的初始化,就跟一个指针初始化一样,不会有构造函数调用。
小志8554 2015-04-22
  • 打赏
  • 举报
回复
ATM(consumer& cn):cnsm(cn){}/这行代码是啥意思呢? void welcome(); // 登陆界面 把传入的形参cn赋给成员变量cnsm。这样做的好处是可以在构造函数调用之前对cnsm进行赋值
yshuise 2015-04-22
  • 打赏
  • 举报
回复
构造函数呀,很基础 。
yangyunzhao 2015-04-22
  • 打赏
  • 举报
回复
引用 2 楼 a30037338 的回复:
拷贝构造函数, ATM(consumer& cn):cnsm(cn){}/ 这里直接把cn赋值给cnsm
不是拷贝构造函数,只是构造函数
生活的苦涩 2015-04-22
  • 打赏
  • 举报
回复
cnsm是一个常量型成员变量或者引用型成员变量,必须通过成员初始化列表的方式进行初始化
此后三年 2015-04-22
  • 打赏
  • 举报
回复
拷贝构造函数, ATM(consumer& cn):cnsm(cn){}/ 这里直接把cn赋值给cnsm
liuyuanmei 2015-04-22
  • 打赏
  • 举报
回复
ATM(consumer& cn):cnsm(cn){} 等同于 ATM(consumer& cn) { cnsm = cn; } 这个是赋值,可以不用写在构造函数中的大括号内

64,654

社区成员

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

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