欢迎来到天天文库
浏览记录
ID:38592092
大小:80.50 KB
页数:16页
时间:2019-06-15
《面向对象程序设计复习纲要》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2013面向对象程序设计复习纲要1、基本题型与范围1.1题型:基础概念解释和问答、判断、填空、阅读程序写结果、单选、编写程序。2.2内容覆盖:面向对象基础概念和机制,封装、继承和多态(本部分内容为重点,含模板、运算符重载等)。以面向对象课程为主。2、课程基本内容一览2.1一些术语的不同提法基类——父类派生类——子类拷贝构造函数——复制构造函数2.2类与对象面向对象程序设计特点:抽象、封装、继承、多态Public、protected、private成员的区别(访问权限不同、继承方式不同)构造函数、析构函数(析构函数既无参数也无返回值,故不能重载,
2、即:一个类中不可能有多个析构函数)一个类,必须有构造函数、析构函数,即使不定义,系统将自动创建默认的函数注意构造函数和析构函数是由系统自动调用,特别注意,构造函数可能有多个,到底调用哪一个,由定义对象时或使用new运算符时所给的参数确定如果程序未创建拷贝构造函数,则系统也将自动创建默认的拷贝构造函数。简单的说:1、若未定义构造函数则系统将自动创建默认的无参构造函数2、若未定义拷贝构造函数,则系统将自动创建默认的拷贝构造函数,此时的拷贝构造函数仅实现浅拷贝;3、若未重载赋值运算,则当对象之间进行赋值时,系统将使用建默的=,此时的赋值仅实现浅拷贝;
3、问题:1、什么是浅拷贝和深拷贝?2、什么时候需要自定义拷贝构造函数?(需要深拷贝:自己体会什么时候需要深拷贝)3、拷贝构造函数何时被调用?(以下示例中point为一个类)1)、当用类的一个对象初始化该类的另一个对象时。例:intmain(){pointA(1,2);pointB(A);//用对象A初始化对象B,拷贝构造函数被调用.pointC=A;//此处等价于C(A),别误以为调用了赋值运算=,}2)、如果函数的形参是类的对象,调用函数时,进行形参和实参结合时。例:voidf(pointp){}main(){pointA(1,2);f(A);
4、//函数的形参为类的对象时,当调用函数时,拷贝构造函数被调用.}3)、如果函数的返回值是类的对象,函数执行完成返回调用者时。例:pointg(){staticpointA(1,2);returnA;//函数的返回值是类的对象,返回函数值时,调用拷贝构造函数.}voidmain(){pointB;B=g();}一个完整的程序://---------------------------------------------------------------------------#include//---------------
5、------------------------------------------------------------usingnamespacestd;//---------------------------------------------------------------------------classA{public:A(){cout<<"A构造函数"<6、perator=(A&b){cout<<"A重载的赋值运算"<7、然后析构对象a}//---------------------------------------------------------------------------voidmain(void){Aa;//1:调用构造函数a=Func(a);//2:向Func传参调用拷贝构造,然后进入Func,然后赋值,然后析构Func返回的的隐形对象system("pause");//程序结束后,对象a将被析构}/*程序完整输出:A构造函数A拷贝构造A构造函数A拷贝构造A重载的赋值运算A拷贝构造A析构函数A析构函数A拷贝构造A析构函数A析构函数A重载的赋8、值运算A拷贝构造A析构函数A析构函数A析构函数*/4、拷贝构造函数与赋值运算符(=)有何区别?什么时候需要重载赋值运算符?5、this指针2.3C++
6、perator=(A&b){cout<<"A重载的赋值运算"<7、然后析构对象a}//---------------------------------------------------------------------------voidmain(void){Aa;//1:调用构造函数a=Func(a);//2:向Func传参调用拷贝构造,然后进入Func,然后赋值,然后析构Func返回的的隐形对象system("pause");//程序结束后,对象a将被析构}/*程序完整输出:A构造函数A拷贝构造A构造函数A拷贝构造A重载的赋值运算A拷贝构造A析构函数A析构函数A拷贝构造A析构函数A析构函数A重载的赋8、值运算A拷贝构造A析构函数A析构函数A析构函数*/4、拷贝构造函数与赋值运算符(=)有何区别?什么时候需要重载赋值运算符?5、this指针2.3C++
7、然后析构对象a}//---------------------------------------------------------------------------voidmain(void){Aa;//1:调用构造函数a=Func(a);//2:向Func传参调用拷贝构造,然后进入Func,然后赋值,然后析构Func返回的的隐形对象system("pause");//程序结束后,对象a将被析构}/*程序完整输出:A构造函数A拷贝构造A构造函数A拷贝构造A重载的赋值运算A拷贝构造A析构函数A析构函数A拷贝构造A析构函数A析构函数A重载的赋
8、值运算A拷贝构造A析构函数A析构函数A析构函数*/4、拷贝构造函数与赋值运算符(=)有何区别?什么时候需要重载赋值运算符?5、this指针2.3C++
此文档下载收益归作者所有