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

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

2012-09-18 
有点神奇,让我不理解了。C/C++ code#include iostream#include stringusing namespace stdclass Inter

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

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[]没有产生这个中间变量,就要问开发编译器的了。

热点排行