- 5
- 0
- 约4.18千字
- 约 23页
- 2016-08-20 发布于湖北
- 举报
Designed by Ruifang ZHAI 华中农业大学计算机科学与技术系 C++ 程 序 设 计 C++ Programming 翟瑞芳 Email: rfzhai@mail.hzau.edu.cn Office: 逸夫楼B407-1 拷贝构造函数 一、拷贝构造函数 4.3.2 P109 二、浅拷贝与深拷贝 6.5 P226 一、拷贝构造函数 一、拷贝构造函数 拷贝构造函数:具有构造函数的所有特性,形参是本类对象的引用。 使一个已经存在的对象,去初始化一个新对象。 创建新对象A时,若用另一个对象B来初始化,需使用复制(拷贝)构造函数将B的值传给A。 Rect rec1, rec2(2,4,6,2); Rect rec3=rec1, rec4(rec2); 有关拷贝构造函数形参的讨论 ①传值型:Rect(Rect r) ②指针型:Rect(const Rect *r) ③引用型:Rect(const Rect r) 用实参(已经存在的对象)初始化形参(新创建的对象),本身需要拷贝构造函数,形成逻辑上的循环定义。 × 用对象的地址作实参,而非对象作实参。 × 用对象作实参初始化引用型形参,但并不新创建对象。用const限制可保护实参不被函数体修改。 √ 拷贝构造函数的形参为本类对象的引用 一、拷贝构造函数 2°若类中未定义拷贝构造函数,系统会自动生成一个默认拷贝构造函数: 类名(类名 x){ *this=x; } 特性: 1°用拷贝构造函数创建对象时,不会调用其他构造函数。 3°每个类有且仅有一个拷贝构造函数,且不能重载。 一、拷贝构造函数 特性: 4°使用拷贝构造函数创建对象常见的三种场合: (1)创建新对象时 (2)调用函数时 (3)函数返回对象时 在函数设计中,使用引用型形参、引用返回类型,可避免拷贝构造对象。 一、拷贝构造函数 Class Point{ public: Point (int xx=0, int yy=0) { //constructor; x = xx; yy = yy;} Point( Point p); //copy constructor; int getX() { return x; } int getY() { return y; } private: int x, y; }; Point::Point(Point p){ x = p.x; y = p.y; coutp.getX()endl; } 一、拷贝构造函数 (1) 创建新对象时,用一个已存在的对象初始化新对象 int main( ) { Point a(1,2); Point b(a); //用对象a初始化对象b Point c = a; //用对象a初始化对象c coutb.getX()endl; return 0; } 一、拷贝构造函数 调用函数时,用一个已存在的对象作实参初始化值传递的形参 void f(Point p) { coutp.getX()endl;} int main() { Point a(1,2); f(a); //调用时拷贝构造函数被调用; return 0; } 一、拷贝构造函数 (3) 函数返回对象时,用返回的表达式(一个已经存在的对象)初始化值返回时创建的临时对象 Point g( ) { Point a(1,2); return a; //返回函数值时,拷贝构造函数调用 } int main() { Point b; b = g(); return 0; } 一、拷贝构造函数 二、浅拷贝和深拷贝 class Rect { public: Rect() // 构造函数,p指向堆中分配的一空间 { p = new int(100); } ~Rect() // 析构函数,释放动态分配的空间 { coutDestructor!endl; if(p != NULL) { delete p; } } private: int width, height; int *p; // 一指针成员 }; int main() { Rect rect1; Rect rect2(rect1); // 拷贝对
您可能关注的文档
- 电子工艺与综合设计精读.doc
- 短文两篇《蝉·贝壳》精读.ppt
- 第十七人民民主政权的行政管理精读.ppt
- 二级建造师施工管理考试精读.doc
- 复习“罢黜百家独尊儒术”精读.ppt
- 感染性腹泻精读.ppt
- 单片机温度控制英文文献及翻译精读.doc
- 第六正弦波振荡电路精读.ppt
- 第单元国际海洋租船货运代理实训精读.ppt
- 第七电子显微镜免疫组织化学技术精读.ppt
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 面向产业的算法治理研究(2025年).pptx
- 梵音入汉:佛经汉译对汉语演进的多维影响.docx
- 小学低段音乐课堂管理方法的研究课题资料(包含申请表、开题报告、实施方案、结题报告等).pdf VIP
- 2026《隧道贯通误差预计计算案例》4000字.docx
- 2022-2023学年北京市丰台区高二(下)期末数学试卷(附答案详解).docx VIP
- 5m盐酸溶液的配制 -回复.pdf VIP
- 2026年新疆工程学院辅导员招聘备考题库最新.docx VIP
- 2026年新疆财经大学辅导员招聘备考题库必考题.docx VIP
- 2026年新疆农业大学辅导员招聘备考题库附答案.docx VIP
- 现代金属凝固技术课件(9056KB).ppt VIP
原创力文档

文档评论(0)