读书人

有点神奇让小弟我不理解了

发布时间: 2012-09-18 16:21:42 作者: rapoo

有点神奇,让我不理解了。

C/C++ code
#include <iostream>#include <string>using namespace std;class Internet{public:    Internet(string name,string address)    {        cout << "载入构造函数" << endl;        Internet::name = name;        Internet::address = address;    }    Internet(Internet &temp)    {        cout << "载入COPY 构造函数" << endl;        Internet::name = temp.name;        Internet::address = temp.address;    }    ~Internet()    {        cout << "载入析构函数!" << endl;    }public:    string name;    string address;};void main(){    Internet a = Internet("中国软件开发实验室", "www.cndev-lab.com");    string q = a.name;    cout << q << endl;}


显示结果:
载入构造函数
载入COPY 构造函数
载入析构函数
中国软件开发实验室
载入析构函数

问题1:www.cndev-lab.com 为什么没显示出来?
问题2:Internet("中国软件开发实验室", "www.cndev-lab.com");调用的是 无名构造 为什么还会调用拷贝函数??

C/C++ code
#include <iostream>#include <string>using namespace std;class Internet{public:    Internet(char *name,char *address)    {        cout << "载入构造函数" << endl;        strcpy(Internet::name, name);        strcpy(Internet::address, address);    }    Internet(Internet &temp)    {        cout << "载入COPY 构造函数" << endl;        strcpy(Internet::name, temp.name);        strcpy(Internet::address, temp.address);    }    ~Internet()    {        cout << "载入析构函数!" << endl;    }public:    char name[20];    char address[20];};void main(){    Internet a = Internet("中国软件开发实验室", "www.cndev-lab.com");    string q = a.name;    cout << q << endl;}

问题3:以上2段程序有什么区别?

[解决办法]
问题1.你都没打印address为什么要显示

问题2.Internet a = Internet("中国软件开发实验室", "www.cndev-lab.com");
分解下:Internet temp("中国软件开发实验室", "www.cndev-lab.com");

Internet a(temp);


[解决办法]
string q = a.name; // a.name=中国软件开发实验室
cout << q << endl; //q=中国软件开发实验室

输出 中国软件开发实验室


www.cndev-lab.com 你哪里输出了?!.
[解决办法]
探讨

问题1.你都没打印address为什么要显示

问题2.Internet a = Internet("中国软件开发实验室", "www.cndev-lab.com");
分解下:Internet temp("中国软件开发实验室", "www.cndev-lab.com");

Internet a(temp);

[解决办法]
C/C++ code
public:    string name;    string address;
[解决办法]
探讨
问题1.你都没打印address为什么要显示

问题2.Internet a = Internet("中国软件开发实验室", "www.cndev-lab.com");
分解下:Internet temp("中国软件开发实验室", "www.cndev-lab.com");

Internet a(temp);

[解决办法]
2楼给出的就是理论上的一个过程。
但为何char[]没有产生这个中间变量,就要问开发编译器的了。

读书人网 >C++

热点推荐