赋值函数

zhentongshu 2013-07-01 02:16:52
class Z
{
public:
Z(){cout<<"Z default constructor"<<endl;}
Z(int n){cout<<"Z int conructor, and int ="<<n<<endl;}//这是类型转换的赋值函数吗
};

class A
{
public:
A(){y=1;cout<<"A constructor"<<endl;}
Z x;
Z y;
};
...全文
171 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2013-07-01
  • 打赏
  • 举报
回复
所以我建议你去看下深浅拷贝过程
心留 2013-07-01
  • 打赏
  • 举报
回复
就是为了防止你忘记初始化设置的
rocktyt 2013-07-01
  • 打赏
  • 举报
回复
两者都是普通的单参构造,跟拷贝,赋值扯不上关系
zhentongshu 2013-07-01
  • 打赏
  • 举报
回复
引用 8 楼 ganpengjin1 的回复:
那我给你解释了吧,其实我建议你看是希望你可以更深入了解拷贝的整个过程及其什么是拷贝和赋值的区别,好了不废话了,回到正题: class Z { public: Z(){cout<<"Z default constructor"<<endl;} Z(int n){cout<<"Z int conructor, and int ="<<n<<endl;}//这个是赋值还是拷贝构造函数呢? 这里既不是拷贝也不是赋值,为什么呢?因为这是一个重载的构造函数,你在外部实例化时所需要带上的默认参数 }; class A { public: A(){y=1;cout<<"A constructor"<<endl;}// 这里调用了 Z(int n)作为赋值吧? 都不是 Z x; Z y; }; class B:public A { public: B():n(3),m(2){cout<<"B construcotr"<<endl;}// 这里也调用了 Z(int n) 作为拷贝构造 不是什么构造拷贝赋值 Z m; Z n; }; 注意: 拷贝:是不带有’=‘符号的复制,例如,Obj b,Obj a(b)这才是拷贝 赋值:带有=符号,例如,Obj b,Obj a; a=b,这才是赋值
你说用初始化列表 不会调用拷贝构造函数?
橡木疙瘩 2013-07-01
  • 打赏
  • 举报
回复
Z(int n)既不是拷贝构造函数也不是赋值操作符,它就是单个参数为int类型的构造函数,这个构造函数会导致int类型到Z类型有一个隐式类型转换。
漫步者、 2013-07-01
  • 打赏
  • 举报
回复
那我给你解释了吧,其实我建议你看是希望你可以更深入了解拷贝的整个过程及其什么是拷贝和赋值的区别,好了不废话了,回到正题: class Z { public: Z(){cout<<"Z default constructor"<<endl;} Z(int n){cout<<"Z int conructor, and int ="<<n<<endl;}//这个是赋值还是拷贝构造函数呢? 这里既不是拷贝也不是赋值,为什么呢?因为这是一个重载的构造函数,你在外部实例化时所需要带上的默认参数 }; class A { public: A(){y=1;cout<<"A constructor"<<endl;}// 这里调用了 Z(int n)作为赋值吧? 都不是 Z x; Z y; }; class B:public A { public: B():n(3),m(2){cout<<"B construcotr"<<endl;}// 这里也调用了 Z(int n) 作为拷贝构造 不是什么构造拷贝赋值 Z m; Z n; }; 注意: 拷贝:是不带有’=‘符号的复制,例如,Obj b,Obj a(b)这才是拷贝 赋值:带有=符号,例如,Obj b,Obj a; a=b,这才是赋值
zhentongshu 2013-07-01
  • 打赏
  • 举报
回复
引用 6 楼 ganpengjin1 的回复:
4L,所以我建议你去看下。
我看过了,没看到跟我的问题有什么关系
漫步者、 2013-07-01
  • 打赏
  • 举报
回复
4L,所以我建议你去看下。
就是那个党伟 2013-07-01
  • 打赏
  • 举报
回复
zhentongshu 2013-07-01
  • 打赏
  • 举报
回复
引用 3 楼 ganpengjin1 的回复:
你先去看深浅拷贝,什么是复制,赋值一目了然
这跟深浅拷贝什么关系? 我是想问带参数的构造函数,是会被隐式用来做赋值函数吗
漫步者、 2013-07-01
  • 打赏
  • 举报
回复
你先去看深浅拷贝,什么是复制,赋值一目了然
zhentongshu 2013-07-01
  • 打赏
  • 举报
回复
class Z { public: Z(){cout<<"Z default constructor"<<endl;} Z(int n){cout<<"Z int conructor, and int ="<<n<<endl;}//这个是赋值还是拷贝构造函数呢? }; class A { public: A(){y=1;cout<<"A constructor"<<endl;}// 这里调用了 Z(int n)作为赋值吧? Z x; Z y; }; class B:public A { public: B():n(3),m(2){cout<<"B construcotr"<<endl;}// 这里也调用了 Z(int n) 作为拷贝构造 Z m; Z n; };
sublimepan 2013-07-01
  • 打赏
  • 举报
回复
就是个带参数的构造函数而已

65,210

社区成员

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

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