首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于什么时候调用哪种构造函数

2012-09-23 
关于什么时候调用哪类构造函数C/C++ code#include iostreamusing namespace stdclass A{public:A(){m_a

关于什么时候调用哪类构造函数

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;} 

热点排行