
各位晚上好! 若有两个类 A,B,A 中实现了通过 B 来构造 A 的构造方法,那么
B bar; A foo(bar); 成立.然后又在 A 中重载=运算符,使得下面成立:
B bar; A foo; foo = bar; 现在我直接赋值初始化就出错(请教一下原因):>
B bar; A foo = bar;//显示没有这种转换形式 如果想要像上面这样初始化 A 类,我还需要做什么吗?
1 elfive 2019-06-12 22:05:01 +08:00 via iPhone A::A(B & b)方法 |
2 noli 2019-06-12 22:33:14 +08:00 替一楼修改一下说法, 需要一个以 B 类型常引用作为参数的 A 的构造函数 A::A(const B& b) |
3 HHehr0ow 2019-06-12 23:23:52 +08:00 看编译器报错,缺啥补啥 |
4 zycpp 2019-06-13 09:17:25 +08:00 via iPhone gcc7.3 下没问题,楼主贴下代码 |
5 PanPancf 2019-06-13 10:30:25 +08:00 A foo = bar 需要你提供一个 copy constructor |
6 tkhmy 2019-06-13 10:42:39 +08:00 via Android 拷贝构造 不同于 赋值运算 |
7 LitostCheng 2019-06-13 11:13:30 +08:00 一个是拷贝构造函数,一个是复制函数, 6 楼 @tkhmy 正解 |