欢迎来到天天文库
浏览记录
ID:41699968
大小:60.43 KB
页数:12页
时间:2019-08-30
《拷贝构造函数详解VC》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.什么是拷贝构造函数首先对于普通类型的对象來说,它们之间的复制是很简单的,例如:[c・sharp]viewplaincopy1.inta=100;2.intb=a;而类对象与普通对象不同,类对象内部结构一般较为复朵,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp]viewplaincopy1.#include2.usingnamespacestd;3・4.classCExample{5・private:6.inta;7.public:8.//构造函数9.CExample(intb)10.
2、{a=b;}11.12・//一般函数13.voidShow()14.{15.cout<3、工作过程。[c-sharp]viewplaincopy1.#include2.usingnamespacestd;3・4.classCExample{5・private:6.inta;7.public:8.〃构造函数9.CExample(intb)10.{a=b;}11.12・//拷贝构造函数13.CExample(constCExample&C)14.{15.a=C.a;16.}17.18・〃一般函数19.voidShow()20.{21.cout<4、in()25.{26.CExampleA(100);27.CExampleB=A;//CExampleB(A);也是一样的28.B.Show();29.return0;31-}CExample(constCExamplc&C)就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是木类型的一个引用变量。一.拷贝构造函数的调用时机在C++中,下面三种对彖需要调用拷贝构造函数!1.对象以值传递的方式传入函数参数[c-sharp]viewplaincopy1.classCEx5、ample2・{1.private:1,4.inta;5-6.7.8.9.10•lie12.13•14.15•16.17.18•19•20•21.22.23.24.25•26•27•28•29•30•31e32.33.public:〃构造函数CExample(intb){a=b;cout<fdelete:H<6、voidShow(){cout<7、mpleC(test);(3).等g_Fun()执行完后,析构掉C对象。1.对象以值传递的方式从函数返回[c・sharp]viewplaincopy1.classCExample2.{3.private:4.inta;5.5.public:6.〃构造函数7.CExample(intb)9・{10.a=b;}12.13・〃拷贝构造14.CExample(constCExample&C)15・{16.a=C・a;17.cout<8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;9、37.}当g_Fun()
3、工作过程。[c-sharp]viewplaincopy1.#include2.usingnamespacestd;3・4.classCExample{5・private:6.inta;7.public:8.〃构造函数9.CExample(intb)10.{a=b;}11.12・//拷贝构造函数13.CExample(constCExample&C)14.{15.a=C.a;16.}17.18・〃一般函数19.voidShow()20.{21.cout<4、in()25.{26.CExampleA(100);27.CExampleB=A;//CExampleB(A);也是一样的28.B.Show();29.return0;31-}CExample(constCExamplc&C)就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是木类型的一个引用变量。一.拷贝构造函数的调用时机在C++中,下面三种对彖需要调用拷贝构造函数!1.对象以值传递的方式传入函数参数[c-sharp]viewplaincopy1.classCEx5、ample2・{1.private:1,4.inta;5-6.7.8.9.10•lie12.13•14.15•16.17.18•19•20•21.22.23.24.25•26•27•28•29•30•31e32.33.public:〃构造函数CExample(intb){a=b;cout<fdelete:H<6、voidShow(){cout<7、mpleC(test);(3).等g_Fun()执行完后,析构掉C对象。1.对象以值传递的方式从函数返回[c・sharp]viewplaincopy1.classCExample2.{3.private:4.inta;5.5.public:6.〃构造函数7.CExample(intb)9・{10.a=b;}12.13・〃拷贝构造14.CExample(constCExample&C)15・{16.a=C・a;17.cout<8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;9、37.}当g_Fun()
4、in()25.{26.CExampleA(100);27.CExampleB=A;//CExampleB(A);也是一样的28.B.Show();29.return0;31-}CExample(constCExamplc&C)就是我们自定义的拷贝构造函数。可见,拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是木类型的一个引用变量。一.拷贝构造函数的调用时机在C++中,下面三种对彖需要调用拷贝构造函数!1.对象以值传递的方式传入函数参数[c-sharp]viewplaincopy1.classCEx
5、ample2・{1.private:1,4.inta;5-6.7.8.9.10•lie12.13•14.15•16.17.18•19•20•21.22.23.24.25•26•27•28•29•30•31e32.33.public:〃构造函数CExample(intb){a=b;cout<fdelete:H<6、voidShow(){cout<7、mpleC(test);(3).等g_Fun()执行完后,析构掉C对象。1.对象以值传递的方式从函数返回[c・sharp]viewplaincopy1.classCExample2.{3.private:4.inta;5.5.public:6.〃构造函数7.CExample(intb)9・{10.a=b;}12.13・〃拷贝构造14.CExample(constCExample&C)15・{16.a=C・a;17.cout<8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;9、37.}当g_Fun()
6、voidShow(){cout<7、mpleC(test);(3).等g_Fun()执行完后,析构掉C对象。1.对象以值传递的方式从函数返回[c・sharp]viewplaincopy1.classCExample2.{3.private:4.inta;5.5.public:6.〃构造函数7.CExample(intb)9・{10.a=b;}12.13・〃拷贝构造14.CExample(constCExample&C)15・{16.a=C・a;17.cout<8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;9、37.}当g_Fun()
7、mpleC(test);(3).等g_Fun()执行完后,析构掉C对象。1.对象以值传递的方式从函数返回[c・sharp]viewplaincopy1.classCExample2.{3.private:4.inta;5.5.public:6.〃构造函数7.CExample(intb)9・{10.a=b;}12.13・〃拷贝构造14.CExample(constCExample&C)15・{16.a=C・a;17.cout<8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;9、37.}当g_Fun()
8、ndl;23・}24・};25・23.〃全局函数24.CExampleg_Fun()25.{26.CExampletemp(0);27.returntemp;p33.intmain()34.{35・g_Fun();34.return0;
9、37.}当g_Fun()
此文档下载收益归作者所有