关于什么时候调用哪种构造函数
关于什么时候调用哪类构造函数
参数构造
复制构造
析构
析构
请按任意键继续. . .
期待大神指点。。
------解决方案--------------------
- C/C++ code
#include <iostream> using namespace std; class A { public: A() { m_a = 0; cout << "默认构造" << endl; } A(int i) { m_a = i; cout << "参数构造" << endl; } ~A() { cout << "析构" << endl; } A(const A& a) { cout << "复制构造" << endl; } A operator=(const A& a) { cout << "拷贝构造" << endl; return a; } private: int m_a; }; A foo(A a) { return a; } int main() { A a(100); A tmp; tmp = a; return 0; }
- C/C++ code
参数构造//明白 默认构造//明白 拷贝构造//明白。。。 复制构造//费解 析构 析构 析构 请按任意键继续. . .
- C/C++ code
int main() { A a(100); A tmp = a;//这句为什么没有拷贝构造,复制构造是怎么来的。。 return 0; }
参数构造
复制构造
析构
析构
请按任意键继续. . .
期待大神指点。。
------解决方案--------------------
- C/C++ code
A a; //缺省构造 A b = a; //拷贝构造 A c(b); //拷贝构造 b = a; //赋值拷贝,不叫构造。构造指实例化,说明尚未创建过。
------解决方案--------------------
楼主,你还是立即扔了你的破教材,换本好点的吧。
能把赋值叫成构造的破书,还是不要看了。
另外,没有告诉你 A tmp = a;是构造,不会调赋值的教材,也不要买。
------解决方案--------------------
- C/C++ code
A tmp = a; // 等价于 A tmp(a); 调用 A(A const&)
------解决方案--------------------
- C/C++ code
#include <iostream> using namespace std; class A { public: A() { m_a = 0; cout << "默认构造" << endl; } A(int i) { m_a = i; cout << "参数构造" << endl; } ~A() { cout << "析构" << endl; } A(const A& a) { cout << "复制构造" << endl;//拷贝构造 } A operator=(const A& a) { cout << "拷贝构造" << endl;//重载赋值操作符 return a; } private: int m_a; }; A foo(A a) { return a; } int main() { A a(100); A tmp; tmp = a; return 0; }