ImageVerifierCode 换一换
格式:DOC , 页数:144 ,大小:862KB ,
资源ID:2950706      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2950706.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++&C学习笔记.doc)为本站会员(tangtianxu1)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

C++&C学习笔记.doc

1、1梦想是成长的潜力。C+学习笔记 .2类 与数据抽象 2运算符重载 9继承 16文件处理 22异常处理 24数据结构 26链表 26堆栈 31队列 32二叉树 32模板 100虚函数和多态性 259string 类与字符串处理 393STL.649I/O 流 1035C+杂记 .1136C+中 const 总结 1240C+中的 static 成员 1325构造函数与析构函数 1367名字空间 1452常用 C+标准库头文件 1539面向对象编程工程的一般结构 1678出错提示 1692this 指针 .1703动态内存分配与 new 和 delete 运算符 1754对象与成员关系的深入思考

2、 1775类、类成员、对象可借用二维表来描述:我的黄金思想 1788类型转换 1802函数指针 1813关于友元 1837C 语言学习笔记 1908C 语言概述 1909基本数据类型 1970算术运算符 2120程序结构 2271C/C+数组 .2381C/C+指针 .2518C/C+函数 .2747结构型 2924编译预处理 3098条件编译 31552C 杂记 3205运算符的优先级和结合律 3224本文档结构:标题 1标题 3标题 4本文档大部分内容取自C+大学教程 (第二版) ,美Harvey M.Deitel 和 Paul James Deitel著,电子工业出版社。C+学习笔记类与

3、数据抽象在 C 语言和其他过程化编程语言中,编程是面向操作的。而在 C+中,编程是面向对象的。在 C 语言中,编程单位是函数,C 语言程序员的主要工作是编写函数,完成某个任务的一组操作构成函数,函数的组合则构成程序。数据在 C 语言中当然很重要,但这些数据只用于支持函数所要进行的操作。系统指定中的动词帮助 C 语言程序员确定一组用于实现系统的函数。而在 C+中,编程的单位是类,对象最终要通过类实例化。C+程序员把重点放在生成称为类的用户自定义类型。每个类包含数据和操作数据的一组函数。类的数据部分称为数据成员,类的函数部分称为成员函数,有些面向对象语言也称方法。int 等内部类型的实例称为变量(

4、variable) ,而用户自定义类型(即类)的实例则称为对象(object) 。在 C+中,变量与对象常常互换使用,C+的重点是类而不是函数。系统指定中的名词帮助 C+程序员确定实现系统所需的用来生成对象的一组类。类与结构型:C+中的类是由 C 语言中的 struct 演变而来的,C+中的结构和类是非常相似的。结构成员可以是任何类型,但不能是结构本身的类型。例如,Time 类型的成员不能在 Time 的结构定义中声明,但可以在该结构定义中声明 Time 结构的指针。当结构包含同一类型结构的指针时,称为自引用结构。自引用结构用于形成链接数据结构,如链表、队列、堆栈和树等。结构的定义并不在内存中

5、保留任何空间,而是生成新的数据类型,用于声明变量。访问结构成员或类成员时,使用成员访问运算符,包括圆点(.)和箭头运算符(-) 。圆点运算符通过对象的变量名或对象的引用(引用对象)访问结构和类成员。箭头运算符通过对象指针(指针对象)访问结构和类成员。3结构与类相比生成的数据类型有一定的缺点。程序能够直接访问数据成员,所以无效的数据可能赋给结构成员。如果 struct 的实现方法改变,则所有使用这个 struct 的程序都要改变,这是因为程序员直接操作数据类型,没有一个“接口”保证程序员正确使用数据类型并保持数据的一致状态。有关结构型的更多信息参见“结 构型” 。结构与类是很相似的以下引用摘自网

6、络:“结构和类在 C+中有好多相似之处,同样可以有方法(在 C 中的结构就不行) ,同样都是数据类型,所说的不同也许是指 C 中的结构与 C+中的类相比吧。 ”“其实在 C+中,类和结构没有什么大的区别,也可以定义方法, 只是在类中,默认的是 private,而在结构中默认的是public。 ”结构也可以定义方法: class myc int in; float fl; ; struct mys int in; float fl; ; MyClass mc; MyStruct ms; int c=sizeof(mc); int s=sizeof(ms); 运行后 c=s+4 个字节,你用 VC

7、 试试就知道了 原因:对于类(其实是浪废)多了一个虚函数指针,当上级类中有虚函数定义时,如果本类定义了这个虚函数,则执行Up* u;Child* c=new Child(); u=c; /基类指针指向派生类对象u.fun();/fun 为 u 中定义的虚函数 第三行执行的是 c 定义的虚函数,运行时如何知道这一点呢,就是通过上面的指针现查到的 (即 C+的多态性) 。总之:struct 更节约内存,但不能定义虚函数了。总结:C+中的结构(struct)与类大致上相同。也就是说,结构中也可以定义函数,但不像类中定义的函数那样都有一个隐藏的 this 指针。另外,结构中的静态变量,对成员的引用方式

8、,都与类相同。结构同样可以使用访问权限限定符来限定成员的访问属性,只是在默认情况下结构的成员访问属性为 public,而类成员默认为 private。成员函数响应对象接收的消息(message) 。所谓消息是指函数对对象的调用(也说对象调用函数) ,这样的一种调用就是消息,而响应是指成员函数的执行。引自教材“消息对应于一个对象发给另一个对象或由函数发给对象的成员函数调用” 。4注意,类的 public 成员函数往往又称 public 服务、public 行为、类的接口等,类的客户使用这些函数操作该类的数据。类的客户是指像 main 函数这样使用类提供的功能的对象。当不显示声明类的成员访问方式的

9、时候,默认为 private 方式访问,但提倡显式声明。类定义包含类的数据成员和成员函数的声明。类的数据成员无法在类体中声明时初始化,而要用类的构造函数初始化,也可以用给它们设值的成员函数赋值;成员函数的声明就是声明函数原型,成员函数可以在类的内部定义,但在类的外部定义函数是个良好的习惯。类定义外定义成员函数需要加上二元作用域运算符与类名联系起来,惟一标识某个类的成员函数。尽管类定义中声明的成员函数可以在类定义之外定义,但成员函数的定义仍然在(属)类范围(classs scope,在类外定义的成员函数定义体也称类范围) 。在类范围中,类成员可由该类的所有成员函数直接访问;在类范围外,类成员是通

10、过一个对象的句柄引用,可以是对象名、对象引用(引用对象)或对象指针(指针对象) 。每次引用对象中的数据成员和成员函数时,编译器自动插入一个隐式句柄,这个隐式句柄即 this 指针。看下面代码:class Basepublic:Base(int x) value = x;int getData() const ;private:int value;Base:getData() constreturn value; /在类体外定义的成员函数定义体也属于类范围,在类范围中直接访问类成员value.void main(void)Base b(59);coutsetValue(v);int Interf

11、ace:getValue() const return ptr-getValue();/fig07_10.cpp#include #include “interface.h“int main()Interface i(5);cout)和()和流读取(istream 当编译器遇到表达式:cinphone; (phone 为 PhoneNumber 类的一个对象)编译器将生成函数调用:operator(cin,phone);当执行该调用时,引用参数 input 成为 cin 的一个别名,num 成为 phone 的一个别名。再来讨论一下返回值,返回值一般要声明为 ostream(或 istream

12、)类型的引用,代码中要用 return语句返回 cin 或 cout 的引用,即 return output 或 return input,这样可以连续使用流运算符,格式如:coutabc;比如 cinabc,首先表达式 cina,调用函数 operator(cin,a),返回 input 的引用即cin,原表达现在变成 cinbc,依此类推。当然函数首部中可以不用声明返回值类型为流类型的引用,即删除 ostream 声明了一个重载的强制类型转换运算符函数,它根据用户自定义类型 A 的对象建立一个临时的char*类型的对象。如果 s 是某个类对象,当编译器遇到表达式(char*)s 时,会产生

13、函数调用 s.operator char*(),操作数 s 是调用成员函数 operator char*的类对象 s。也就是说转换运算符相当于是一个一元运算符,它被重载为一个没有参数的非 static 成员函数,它的操作数就是调用它的对象。注意:转换运算符重载函数不能指定返回类型,因为它的类型已经被定为要转换后的对象类型。看下面代码在做什么:A:operator int() const;A:operator otherClass() const;声明了两个转换运算符,分别用来把用户自定义类型 A 的对象转换为一个整数和用户自定义类型otherClass 的对象。转换运算符的一个很好的特点就是:

14、当需要的时候,编译器可以为建立一个临时对象而自动地调用这些函数。例如,如果用户自定义类 String 的某个对象 s 出现在程序中需要使用 char*类型的对象的位置上,例如:cout class Stringfriend ostream public:String(const char * = “”);/构造函数。在生成类对象时若不给出参数,则取构造函数提供的默认值来调用构造函数。String(const String /复制构造函数。/注意构造函数的参数,赋予传递进来的引用参数常量性,参数在本函数中是不可以被修改的。即不可以通过形参来改变实参的值。/但这不要求传递进来的引用本身(即实参)是

15、带常量性。const 引用参数是“最快捷又安全”的传递方式。详见“参数传递” 。String();const String /运算符重载函数 operator=,注意函数返回值为 const常量,/这主要用在返回值为自定义对象上,表示函数表达式不可以作左值。const String bool operator!() const;/小括号与大括号之间的 const 声明为常量函数。用于调用常量对象。bool operator=(const String bool operator(const String /重载运算符函数。const char /重载运算符函数的 const 版本。详见“con

16、 st 总结” 。/根据 String 对象是否为 const 类型而使用相应的 operator版本。String /重载()运算符函数。int getLength() const;private:int length;char *sPtr;/字符串对象的核心:字符指针。void setString(const char*);/string1.cpp#include16#include#include#include#include“string1.h”String:String(const char *s):length(strlen(s)cout= 0 String *subPtr =

17、new String;assert(subPtr != 0);if(subLength = 0) | (index + subLength length)subPtr-length = length index + 1; /若给出的参数 subLength 为 0 或过长则子串长度为从指定位置(index)到结束。elsesubPtr-length = subLength + 1;delete subPtr-sPtr; /释放原来所指向的内存空间,重新指向一个新的内存空间。subPtr-sPtr = new charsubPtr-length;assert(subPtr-sPtr != 0);

18、strncpy(subPtr-sPtr,/将参数 2 所指字符串的前参数 3 的长度的子串复制到参数 1 中。subPtr-sPtrsubPtr-length =0;return *subPtr;18int String:getLength() const return length;void String:setString(const char *string2)sPtr = new charlength + 1;assert(sPtr != 0);strcpy(sPtr,string2);ostream input setw(100) temp;s = temp;return input

19、;/main.cpp#include#include“string1.h”/代码省略。1920继承继承中的指针问题指针:获取谁的地址就是指向谁。但是,这个指向存在类型匹配的问题,即某一类的指针只能指向该类型的对象。那么,不同类型之间怎样实现指向呢?这需要通过类型转换。基类指针可以直接指向任何派生类对象,而不需任何设置(类型转换) ,因为派生类对象也是基类对象(public 方式继承) ,用语句说明如下:pointPtr = /pointPtr 是基类指针,c 是派生类对象;左边:pointPtr 是基类指针,它只接收基类对象的地址;右边:c 是派生类对象,但也是基类对象,所以它可以将其地址赋给

20、 pointPtr(其实这个过程有编译器进行的隐式类型转换,隐式将派生类对象转换为基类对象) 。基类指针指向派生类对象,即通过类型指针来引用派生类对象,这种引用是安全的,但是用这种方法只能引用基类成员(因为此时这个指针就是个基类对象) 。如果试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误。而相反,派生类指针不可以直接指向基类对象,否则会引起语法错误。不过可以通过强制类型转换将派生类指针强制转换为基类指针,然后再指向基类对象。强制类型转换通过:static_cast(源类型) 。例如:double d = 8.22;int x = static_cast(d); /返回目标

21、类型的值。基类指针指向派生类对象基类指针指向派生类对象常用于实现虚函数和多态性。21基类指针也是基类的一种对象,它是对象的地址。当它隐性转换指向派生类对象时,它即相当于派生类对象的地址,可代表派生类对象对其成员进行调用,比如:CShape* pShape; /声明基类指针;CEllipse aEllipse; /声明派生类对象;PShape = /基类指针指向派生类对象;PShape - setColor(2);/setColor 是派生类成员函数。其实 setColor 可以是基类的虚函数,可根据 pShape 指向的类而决定调用哪个类的成员函数,这即是多态性。继承概述:首先,我们要区别“是

22、一个对象”和“有一个对象”的差别(简称“是”关系和“有”关系) 。 “是”关系是一种继承,在是关系中,派生类的对象也可以作为基类的对象处理。而“有”关系是一种复合,在这种关系中,一个类的对象拥有作为其成员的其它类的对象。注意,private 和 protected继承不是“是”的关系。而 public 继承是“是”关系。在“是”关系中,派生类对象也作为基类对象处理。派生类将可以继承基类的属性和行为,并可对这些属性和行为予以修饰和增加自己的属性和行为,这即是继承的魅力所在。引教材:注意,因为派生类中没有列出继承来的成员,所以浏览一组派生类的声明会令人迷惑,但是派生类中确实存在继承来的成员。有两种

23、继承方式:单一继承和多重继承。对于单一继承,派生类只有一个基类。对于多重继承,派生类常常是从多个基类派生出来的,这些基类之间可能毫无关系。多重继承详见 “多重 继承” 。public、 protected、private 三个关键字这三个关键字主要用于 2 个地方:1、 限定类成员,称作成员访问说明符;2、 限定继承关系(最常用的是 public,protected 和 private 不常用) 。首先看第 1 种 public 成员,公有成员。在 public 后面(和下一个成员访问说明符之前)声明的数据成员和成员函数能被任何函数在程序能访问该类对象的任何地方进行访问。供大家访问。 priv

24、ate 成员,私有成员。在 private 后面(和下一个成员访问说明符之前)声明的数据成员和成员函数只能由该类的成员函数和友元函数访问。供自己访问。 protected 成员,保护成员。介于前二者之间,类的 protected 成员只能被该类(基类)的成员函数和友元函数以及派生类成员函数和友元函数访问。供自己和派生类访问。public 继承:其实质是:对基类中成员访问说明符及其说明的成员按原样继承到派生类当中。比如,基类中声明public 成员 A、B 及 protected 成员 C、D,通过 public 继承,那么派生类当中也有 public 成员A、B 及 protected 成员

25、C、D 。引教材:以 public 方式从基类派生某个类时,基类的 public 成员会成为派生类的 public 成员,基类的 protected 成员会成为派生类的 protected 成员。对于 private 成员,教材中说其被隐藏,我看就是没有被继承过来,即派生类中没有基类的 private 成员。引教材:基类中不应该让派生类通过继承而访问的成员要在基类中声明为 private。派生类只能通过基类public 和 protected 接口函数访问基类的 private 成员。派生类从基类继承过来的 public 和 protected 成员就像派生类自己的成员一样被使用,不过如果派生

26、类继承它无需有或者不应该拥有的基类 public 成员函数时,可以在派生类中重新定义该成员函数。22看下面例子:class Baseprivate:int value1;protected:int value2;class Derived:public Basepublic:void setReal(int y) value2 = y;/value2 是从基类继承过来的 protected 成员,此处就当作派生类成员一样被使用。此处就不能用 value1。int getReal() const return value2;public 继承方式下派生类对基类成员的访问性:基类成员的访问说明符在

27、派生类中的访问性public 在派生类中为 public。可以直接由任何非 statc 成员函数、友元函数和非成员函数访问。 (直接访问)protected 在派生类中为 protected。可以直接由任何非 statci 成员函数、友元函数访问。(直接访问)private 在派生类中隐藏。可以通过基类的 public 和 protected 成员函数由非 statci 成员函数和友元函数访问。 (间接访问,基类的 public 和 protected 成员函数称为访问函数)private 继承方式下派生类对基类成员的访问性:基类成员的访问说明符在派生类中的访问性public 在派生类中为 p

28、rivate。可以直接由任何非 static 成员函数、友元函数访问。protected 在派生类中为 private。可以直接由任何非 static 成员函数、友元函数访问。private 在派生类中隐藏。可以通过基类的 public 和 protected 成员函数由非 statci 成员函数和友元函数访问。基类的所有成员函数在派生类中均为 private,其中 private 成员为隐藏。protected 继承方式下派生类对基类成员的访问性:基类成员的访问说明符在派生类中的访问性public 在派生类中为 protected。可以直接由任何非 static 成员函数、友元函数访问。pr

29、otected 在派生类中为 protected。可以直接由任何非 static 成员函数、友元函数访问。private 在派生类中隐藏。可以通过基类的 public 和 protected 成员函数由非 statci 成员函数和友元函数访问。基类的所有成员函数在派生类中均为 protected,其中 private 成员为隐藏。23继承注意:1. 派生类由基类派生下来,所以派生类都自然而然继承了基类的成员,包括变量和函数。也就是说,派生类都“暗自”具备了基类的变量和函数。这里所谓的“暗自”意思是无法从各派生类的声明中直接看出来。当然,派生类中也可以“显式”地声明继承过来的成员(一般是成员函数

30、) ,也即对从基类中“暗自”具备的成员函数在派生类中进行改写(重定义) ,那么,这将会引发一个对象调用成员函数的问题:当对象调用其成员函数时,首先确定在自己的类中有没有声明(改写)了该成员函数,若有,则调用自己的成员函数;若没有,则上去基类查找有没有声明该成员函数,即它可能是从基类中“暗自”具备了该成员函数而在自己类中没有改写它,这时就调用基类的成员函数。 见“直接继承 与改写的区别” 。2. 对类实例化对象时,成员变量与成员函数的不同。类的每一个对象都拥有自己的成员变量,但对成员函数,类的所有对象都共享之,即类的所有对象调用的成员函数都是类中声明的成员函数,不会因为对象的不同而有不同的成员函

31、数。注意,类的所有对象尽管调用的都是一致的成员函数,却能根据不同的对象调用而处理不同的成员变量,这是 this 指针在作故,详见“this 指针” 。3. 派生类的构造函数必须调用基类的构造函数来初始化派生类中继承于基类的成员。这是用成员初始化值实现的。详见“成员初始化值” 。见下面实例:Circle:Circle(double r,int a,int b) /派生类构造函数。:Point(a,b) /基类构造函数。即使不显式地调用基类的构造函数,派生类的构造函数也隐式地调用基类的构造函数,只是隐式调用时将采用基类构造函数的默认值(默认构造函数) 。而显式调用基类构造函数,可以给其提供初始化值

32、,即成员初始化值方式。假设基类和派生类都包含其他类的对象(复合) ,则在生成派生类的对象时,首先执行基类成员对象的构造函数,接着执行基类的构造函数,然后执行派生类的成员对象的构造函数,最后才执行派生类的构造函数。析构函数的调用次序与调用构造函数的次序相反。4. 派生类不继承基类的构造函数和赋值运算符(即同类对象的赋值) ,但派生类的构造函数和赋值运算符能调用基类的构造函数和赋值运算符。5. 继承中的静态关联。可以通过二元域作用符(:)引用派生类中的基类部分的成员,这称为静态关联。直接继承与改写的区别:这里所说的直接继承是指派生类继承基类的成员函数,而在派生类中没有对其进行定义和改写(即在派生类

33、中没有重定义同名函数) ,而改写则刚好相反,对继承过来的成员函数进行了重定义。直接继承将维护一份基类的函数拷贝,即派生类中从基类继承过来的成员函数实际上是基类的成员函数;而改写将使其成为本地(即派生类)的成员函数。下面用实例说明:class CObject /声明抽象类24public:virtual void Serialize() cout func(); /实现基类指针指向派生类对象;cout func();cout 操作符,输出文件流(ofstream)支持重载的 accountnamebalance; 从键盘读取数据到变量。outfileaccountnamebalance; 读文件

34、数据到内存变量中。标准输入对象(cin)及文件流对象 inFile 对成员函数的连续调用请参见主题 流 。对于荒废的 库支持 ios:nocreate 和 ios:noreplace 标志,新的 库已经取代了 并不再支持这两个标志。fstream 类型对象同时支持读和写操作:fstream logfile(“database.dat“, ios:in | ios:out);设置文件的位置和 C 的文件操作方式不同的是,C+ I/O 系统管理两个与一个文件相联系的指针。一个是读指针,它说明输入操作在文件中的位置;另一个是写指针,它说明下次写操作的位置。每次执行输入或输出时,相应的指针自动变化。所

35、以,C+的文件定位分为读位置和写位置的定位,对应的成员函数是 seekg()和 seekp(),seekg()是设置读位置,seekp 是设置写位置。它们最通用的形式如下:istream ostream streamoff 定义于 iostream.h 中,定义有偏移量 offset 所能取得的最大值,seek_dir 表示移动的基准位置,是一个有以下值的枚举: ios:beg: 文件开头 ios:cur: 文件当前位置 ios:end: 文件结尾 这两个函数一般用于二进制文件,因为文本文件会因为系统对字符的解释而可能与预想的值不同。例: file1.seekg(1234,ios:cur);/

36、把文件的读指针从当前位置向后移 1234 个字节。file2.seekp(1234,ios:beg);/把文件的写指针从文件开头向后移 1234 个字节 。 29然后调用 tellp()报告新位置。cout“new position: “file1.tellp(); 读写数据块要读写数据块,使用成员函数 read()和 write()成员函数,它们原型如下:read(unsigned char *buf,int num);write(const unsigned char *buf,int num);read()从文件中读取 num 个字符到 buf 指向的内存缓存中,如果在还未读入 num

37、个字符时就到了文件尾,可以用成员函数 int gcount();来取得实际读取的字符数;而 write() 从 buf 指向的内存缓存写 num 个字符到文件中,值得注意的是缓存的类型是 unsigned char *,有时可能需要类型转换。例:unsigned char str1=“I Love You“;int n5;ifstream in(“xxx.xxx“);ofstream out(“yyy.yyy“);out.write(str1,strlen(str1);/把字符串 str1 全部写到 yyy.yyy 中。in.read(unsigned char*)n,sizeof(n);/从

38、 xxx.xxx 中读取指定个整数,注意类型转换。30异常处理通俗地讲,异常就是出错、非所想要的情况。异常处理对代码中可能出错的地方都要进行错误处理。这种方法的好处是程序员阅读代码时能够直接看到错误处理情况,确定是否实现了正确的错误检查。但这种方法的问题是代码中受到错误处理的“污染” ,使应用程序本身的代码更加晦涩难懂。异常处理常见的例子有 new 无法取得所需内存、数组下标超界、运算溢出、除数为 0 和无效函数参数。使用异常处理的方法:用 try、throw 和 catch 三个关键字。try 进行错误检查,从而决定是否抛出(throw )异常 。若抛出了异常,则跳至 try 块最近的一个匹配异常处理器(catch)执行;若没有抛出异常,则执行try 块剩余语句,退出 try 块后,跳过所有异常处理器(catch 语句)后执行。throw 语句可以后跟一个类的构造函数,这样可相当于抛出了一个该类型的异常对象。在 catch 语句中,捕获对象时,需要用该类型生成一个对象,对应抛出的异常对象,如:throw DivideByZeroException () ; /类的构造函数。catch (DivideByZeroException ex) /生成类的异常对象,即对应抛出的异常对象。 处理异常代码 ;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报