C++学习总结.docx_第1页
C++学习总结.docx_第2页
C++学习总结.docx_第3页
C++学习总结.docx_第4页
C++学习总结.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+课程总结1. 类和对象的特性声明类类型:声明类的方法是由声明结构体类型的方法发展而来的。Class是声明类类型的关键字。Class StudentPrivate:Int num;Char name20;Char sex;Public:Void display()Cout”num:”numendl;Cout”name:”nameendl;Cout”sex:”sexendl;Student stud1,stud2;如果在类的定义中既不指定private,也不指定public,则系统就默认为是私有的。Class 类名Private:私有的数据和成员函数;Public:公有的数据和成员函数;定义对象的方法:先声明类类型,然后再定义对象:Student stu1,stu2;/ Student 是已经声明的类类型在C+中,定义对象有两种形式,(1) class 类名 对象名;Class student stud1,stud2;(2) 类名 对象名Student stud1,stud2;2. 类的成员函数:私有的成员函数只能被本类中的其他成员函数所调用,而不能被类外调用。在类外定义成员函数:Class studentPublic:Void display();Private:Int num;String name;Char sex;Void student :display()Cout”num:”numendl;Cout”name:”nameendl;Cout”sex:”sexhour pt所指向的对象中的hour成员,即t1.hour(*pt).get_time()pt-get_time pt所指向的对象中的get_time函数,即t1.get_time指向对象数据成员的指针:定义指向对象数据成员的指针变量的一般形式为:数据类型名 * 指针变量名;Int *p1;/定义指向整形数据的指针变量P1=&t1.hour;/将对象t1的数据成员hour的地址赋给p1,p1指向t1.hourCout*p1endl;指向对象成员函数的指针:定义指向对象成员函数的指针变量的方法和定义指向普通函数的指针变量方法有所不同.普通函数的指针变量的定义方法:类型名(*指针变量名)(参数表列)定义指向成员函数的指针变量:数据类型名(类名:*指针变量名)(参数列表);void(Time:*p2)();/定义p2为指向Time类中公用成员函数的指针变量。指针变量指向一个公用成员函数的一般形式为:指针变量名=&类名:成员函数名.例如p2=&Time:get_time;this指针:它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。公用数据的保护:常对象:const凡希望保证数据成员不被改变的对象,可以声明为常对象。定义常对象的一般形式为:类名const 对象名 (实参表);或者 const 类名 对象名(实参表)常对象必须要有初值。常成员函数是常对象唯一的对外接口。这是为了防止普通成员函数会修改常对象中数据成员的值。常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象中数据成员的值。如果一定要修改常对象中的某个数据成员的值,对该数据成员声明为:mutable.如:mutable int count;常对象成员:常数据成员:只能通过构造函数的参数初始化表对常数据成员进行初始化,任何其他函数都不能对常数据成员赋值。常成员函数:如果将成员函数声明为常成员函数,则只能引用本类中的数据成员,而不能修改它们。声明常成员函数的一般形式为类型名 函数名 (参数表) const const是函数类型的一部分常成员函数可以引用const数据成员也可以引用非const数据成员数据成员非const的普通成员函数Const成员函数非const的普通数据成员可以引用,也可以改变值可以引用,但不可以改变值Const数据成员可以引用,但不可以改变值可以引用,但不可以改变值Const对象不允许可以引用,但不可以改变值常成员函数不能调用另一个非const成员函数。指向对象的常指针:将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即指向不变。定义指向对象的常指针变量的一般形式为:类名 *const 指针变量名。 指向常对象的指针变量:Const 类型名 * 指针变量名 如果一个变量已被声明为常变量,只能用指向常变量的指针变量指向它,而不能用一般的变量去指向它。形参实参合法否改变指针所指向的变量的值指向非const型变量的指针非const变量的地址合法可以指向非const型变量的指针const变量的地址非法/指向const型变量的指针Const变量的地址合法不可以指向const型变量的指针非const变量的地址合法不可以重要规则:当希望在调用函数时对象的值不被修改,就应当把形参定义为指向常对象的指针变量,同时用对象的地址做实参(对象可以是const或非const型)const型数据小结:形式含义Time const t;t是常对象,其值在任何情况下都不能改变Void Time:fun()const;fun是Time类中的常成员函数,可以引用,但不能修改本类中数据成员Time *const p;p是指向Time类对象的常指针变量,p的值(p的指向)不能改变Const Time*p;p是指向Time类常对象的指针变量,p指向的类对象的值不能通过p来改变Const Time &t1=t;t1是Time类对象t的引用,二者指向同一存储空间,t的值不能改变对象的赋值和复制:对象的赋值:对象名1=对象名2;对象1和对象2必须是属于同一个类对象的复制:类名 对象2(对象1);或 类名 对象名1=对象名2对象的赋值是对一个已经存在的对象赋值,因此必须先定义被赋值的对象,才能进行赋值。而对象的复制则是一个从无到有地建立一个新的对象,并使它与一个已有的对象完全相同(包括对象的结构和成员的值)静态成员:如果希望各对象的数据成员的值是一样的,就可以把它定义为静态数据成员。静态数据成员是在程序开始时被分配空间的,到程序结束时才释放空间。静态成员函数主要用来访问静态数据成员,而不访问非静态成员。公用的成员函数可以引用本对象中的一般数据成员(非静态数据成员),也可以引用类中静态成员函数。友元函数:在类体中用friend对其进行声明,此函数就称为本类的友元函数。友元函数可以访问这个类中的私有成员。friend函数不仅可以是一般函数,而且可以是另一个类中的成员函数。类模板:Template/声明一个模板,虚拟类型名为numtypeclass complexpublic:Complex(numtype a,numtype b)/定义构造函数x=a;y=b;numtype max()return (xy)?x:y;numtype min()return (xy)?x:y;Private:numtype x,y;template对象名(参数表);运算服重载:C+根据操作数的数目和类型来决定采用哪种操作 运算符函数的格式如下: operator op (argument-list)op必须是有效的C+运算符。重载限制:使用运算符重载时不能违反运算符原来的句法规则。例如:不能将求摸运算符(%)重载成使用一个操作数:Int x;Time shiva;%x;%shiva.不能修改运算符的优先级。不能创建新的运算符,以下运算符不能重载 sizeof , . , * , : , ?: 。以下运算符只能通过成员函数进行重载:= , () , , - 。(1) 重载不能改变运算符运算对象(即操作数)的个数。(2) 重在不能改变运算符的优先级别。(3) 重载不能改变运算符的结合性。如:赋值运算符”=”是右结合性,重载后仍为右结合性。(4) 重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数,与前面第一点矛盾。(5) 重载的运算符必须和用户的自定义类型的对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。(6) 用于类对象的运算符一般必须重载,但有两个例外,运算符”=”和”&”不必用户重载!重载流插入运算符”istream&operator(istream &,自定义 &);ostream&operator(ostream &,自定义 &);系统把coutc3解释为:operartor(cout,c3)即cout和c3作为实参,调用下面的operator函数ostream&operator(ostream & output,complex & c)output”(”c.real”+”c,imag”i)”endl;return output;调用函数时,形参output成为实参cout的引用,形参c成为c3的引用。因此调用的过程相当于:cout”(”c3.real”+”c3.imag”i)”派生类在声明构造函数时只需对新增的成员进行初始化,继承而来的成员通过基类构造函数初始化。2派生类的构造函数需要给基类的构造函数传递参数。声明格式如下:派生类名:派生类名():继承方式 基类名(参数表) 。 3当基类声明有带形参的构造函数时,派生类需要定义构造函数并对基类的构造函数传递参数。4构造函数和析构函数都不能重写。父类的被隐藏,调用时需要加上父类名+作用域操作符(:)。5派生类被调用时会先调用基类的一个构造函数,再调用派生类。6多继承声明方式派生类名:派生类名():基类名1(参数表) 基类名2(参数表)。 。 引用和指针设A为基类,B为派生类B b;A *p = &b;可以通过p访问A中原有的数据成员,不能访问B中新增加的成员A &r = b; 可以通过r访问A中原有的数据成员,不能访问B中新增加的成员。继承与组合在A类中以B类的对象作为成员变量称之为组合。组合是,一般在A类的构造函数初始化列表中要初始化B类(会调用B的一个构造函数).基类和派生类之间对象的赋值:派生类可以赋值给基类,基类不能赋值给派生类。小结:继承和组合都允许由已存在的类型创建新类型。如果想重用已有类的内部实现的话,最好用组合;如果想重用已有类的接口的话,就应使用继承继承描述的类之间的层次关系是多态的前提。多态性:多态性定义:由继承而产生的相关的不同的类,向其对象发送同一个消息,不同的对象接收到后会

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论