| 最后让我们来看看引用无名对象的情况。
#include <iostream> using namespace std; class Internet { public: Internet(char *name,char *address) { cout<<"载入构造函数"<<endl; strcpy(Internet::name,name); } Internet(Internet &temp) { cout<<"载入COPY构造函数"<<endl; strcpy(Internet::name,temp.name); cin.get(); } ~Internet() { cout<<"载入析构函数!"; } public: char name[20]; char address[20]; }; void main() { Internet &a=Internet("中国软件开发实验室","www.cndev-lab.com"); cout<<a.name; cin.get(); }
引用本身是对象的别名,和复制并没有关系,所以不会调用拷贝构造函数,但要注意的是,在c++看来:
Internet &a=Internet("中国软件开发实验室","www.cndev-lab.com");
是等价与:
Internet a("中国软件开发实验室","www.cndev-lab.com");
的,注意观察调用析构函数的位置(这种情况是在main()外调用,而无名对象本身是在main()内析构的)。 |