转换构造函数与一般构造函数之区别

匚匚 2011-07-28 11:47:16
class A
{
public:
A():a(0){}
A(int n){a=n;} //这是带参构造函数还是转换构造函数?
private:
int a;

}
int tmp=9;
A a;
a=tmp; //? tmp会生成一临时类对象被赋值给a吗?
...全文
198 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2011-07-28
  • 打赏
  • 举报
回复
你所指的都是同一个函数,能有什么区别呢?如果你不理解,那么就把转换构造函数这个概念抛弃掉。
匚匚 2011-07-28
  • 打赏
  • 举报
回复
她们有何区别?此处无区别?另,如果复制构造函数与重载的赋值函数的函数体相同怎么处理?
pengzhixi 2011-07-28
  • 打赏
  • 举报
回复
可以这样定义。
A a(9);调用的就是带参数的构造函数。至于你说他是转换构造函数。也可以这么说。只是这个功能在需要的时候才会体现。
一般 只含一个参数的构造函数都用explicit来限制下。
bdmh 2011-07-28
  • 打赏
  • 举报
回复
A a(9); 调用带参A(int n)
lanneret1234 2011-07-28
  • 打赏
  • 举报
回复

先A(int n)构造对象在operator = 赋值
匚匚 2011-07-28
  • 打赏
  • 举报
回复
可以这们定义对象吗:


A a(9); //调用的是那个带参构造函数还是转换构造函数?或者在此处它们无区别?
pengzhixi 2011-07-28
  • 打赏
  • 举报
回复
恩 会
至善者善之敌 2011-07-28
  • 打赏
  • 举报
回复
A(int n){a=n;} //这是带参构造函数还是转换构造函数?
是代参构造

a=tmp; //? tmp会生成一临时类对象被赋值给a吗?
会隐士的转换产生临时对象 A a(tmp)

64,654

社区成员

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

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