




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机技术与软件资格(水平)考试 培训讲座C+程序设计1 C+对面向过程功能的增强(1) 引用引用是给变量起一个别名,换句话说,是使新变量和原变量共用一个地址。“引用”通过运算符 & 来表示。例1 int n=50;int & rn=n;rn=rn+10;cout”n=”nendl; /输出 n=60n=n+30;cout”rn=”rnendl; /输出 rn=90(2) 使用新的动态内存分配函数即用new 和 delete取代C语言中的malloc()和free()。new 用于进行动态内存分配,即给一个动态变量分配内存。形式为:p=new typesize;其中type 是一个数据类型名,p是指向该类型的指针。size是分配数量。比如#include void main() int *p; p=new int; *p=25; /*p是一个动态整型变量 cout*pendl; delete p; p=new int6; /p指向包含6个整型数组元素的内存区域 *(p+1)=25; /数组元素p1=25 cout*(p+1)endl; delete p; delete用于撤消new所分配的内存,形式为:delete p;或 delete p;(3)重载函数重载函数:函数名相同,参数类型或参数个数不同。例2 #include int max(int a, int b) return ab?a:bint max(int a, int b, int c) int t=max(a,b) return max(t,c)void main() coutmax(2,3)endl;coutmax(2,3,8)endl;(4)函数缺省参数缺省参数就是在参数列表中给出参数的缺省值。例如,上述例2中,2个重载函数可以合并成一个带缺省参数的求3个整数的最大数的函数,其原型为:int max(int a,int b,int c=-32768);若从2个数(2,3)中求大数,使用调用表达式:max(2,3)若从3个数(2,3,8)中求大数,使用调用表达式:max(2, 3, 8)注意:缺省参数必须放在参数序列的最后。若一个缺省参数需要指明一个特定值,则在其之前的所有参数都必须赋值。重载函数和缺省参数一起使用时,要避免二义性。例 “2006年下半年软件设计师试题” 在C+语言中,若类C中定义了一个方法int f(int a,int b),那么方法 (33) 不能与该方法同时存在于类C中。(33)Aint f(int x,int y) Bint f(float a,int b)Cfloat f(int x,float y) Dint f(int x,float y)2 类和对象在C+中,类是一种用户自定义的数据类型,它既包括数据(数据成员),也包括对数据的操作(成员函数),类把数据和操作封装为一个整体。可以使用类名去说明对象(即类的实例化)。注:在C+中,常用的“用户自定义的数据类型”有三种:结构型(struct)、枚举型(enum)、类(class)。知识要点:(1) 构造函数构造函数是类的成员函数;其函数名与类名相同;无返回类型;在类的对象创建时被自动调用;构造函数可以重载。(2) 析构函数析构函数是类的成员函数;其函数名与类名相同,但前面冠有;无返回类型;没有参数;在对象的生存期结束时被自动调用;析构函数可以缺省。(3) 拷贝构造函数(复制构造函数)拷贝构造函数是类的成员函数;其函数名与类名相同;无返回类型;参数的类型为“类的引用”,而且只有一个参数;使用该类的一个对象去初始化另一个对象时被自动调用;拷贝构造函数可以缺省。(4) 类作用域说明类时所使用的一对花括号形成“类作用域”。类作用域运算符为“:”。“类名:”表示其后的成员是在“类名”中说明的。“类名: 成员名” 称为 “成员名限定”。类中也可以只对成员函数进行声明(无函数体),然后在程序的其它地方定义这些成员函数的实现,函数的实现形式为:返回类型 类名:成员函数名(参数) 函数体(5) 类成员的访问权限 private:私有成员,只有该类的成员函数可以访问。 public: 公有成员,任何函数都可以访问。 protected: 保护成员,在类的继承层次结构中,基类的保护成员,对派生类的成员函数而言,它是公有成员,可以被访问;对其他函数而言,它是私有成员,不能被访问。(6) this指针当一个成员函数被调用时,系统自动向它传递一个隐含的指针参数,用this来表示。该指针指向调用该函数的对象。(7) 对象成员如果一个类的数据成员是另一个类的对象,则称该数据成员为对象成员。对象成员的初始化必须采用“成员初始化列表”来完成。例3 class Aprivate:int val;public:A(int i) val=i; ;class Bprivate:A a1,a2;int data;public:B(int i,int j,int k):a1(i),a2(j) data=k; ;其中冒号后由逗号隔开的项“:a1(i),a2(j)”即为成员初始化列表。对基本数据类型的成员的初始化也可以在成员初始化列表中进行。例如:B(int i,int j,int k):a1(i),a2(j),data(k);例4 #include class Point public: Point(int x, int y) X=x;Y=y; / Point构造函数Point(Point &p)X=p.X; Y=p.Y; /Point拷贝构造函数void print()cout(X“,”Y“)”endl; Point() /Point析构函数 private:int X,Y;void main() Point p1(1,1); p1.print(); Point p2(p1); p2.set(3,2); p2.print();上述程序先构造了一个Point类,此类中有: 两个私有成员X,Y, 构造函数Point, 拷贝构造函数Point, 析构函数 Point, 成员print。在主函数中,定义了两个对象 p1和p2。例5 “2006年下半年程序员试题” 类的构造函数被自动调用执行的情况发生在定义该类的 (42) 时。 (42) A.成员函数B.数据成员 C.对象 D.友元函数 例6 “2005年下半年程序员试题” P10(6) 说明 类Stock的定义中有三处错误,分别在代码的第04、06、10行。请补齐下述代码中的空缺1,修改错误并给处修改后该行的完整代码,最后完善程序运行后的输出结果。C+ 代码 01 #include 02 using namespace std; 03 class Stock 04 protected: 05 Stock( ) shares=0; share_val=0.0; Output(); 06 Stock(int n=0,double pr=3.5): (1) /初始化shares 值为n 07 share_val=pr; 08 Output(); 09 ;10 void Stock(); 11 void Output()cout shares : share_val endl; 12 public: 13 /成员函数14 private:15 / 成员变量16int shares; 17double share_val; 18 ;1920 void main() /构造三个Stock 对象a,b,c21 Stock a(1);22 Stock b;23 Stock c = Stock();24 /其他代码省略,且代码无输出25 程序运行后的输出结果为:1:3.5_(2)_(3)_ 3 继承和派生类继承是父类和子类之间共享数据和方法的机制。一个子类可以继承它的父类中的属性和操作,子类还可以定义自己的属性和操作。在一个面向对象系统中,子类和父类之间的继承关系构成了这个系统的类层次结构。在C+中,父类称为基类,子类称为派生类。 知识要点:(1) 公有派生的访问权限: 基类的公有成员在派生类中是公有的。 基类的保护成员在派生类中是保护的。 基类的私有成员在派生类中是不可以访问的。(2) 私有派生的访问权限: 基类的公有成员在派生类中是私有的。 基类的保护成员在派生类中是私有的。 基类的私有成员在派生类中是不可以访问的(3) 保护派生的访问权限: 基类的公有成员在派生类中是保护的。 基类的保护成员在派生类中是保护的。 基类的私有成员在派生类中是不可以访问的。注意:访问权限为公有的,在类内和(在类外建立的)类的对象都可以访问;访问权限为保护的,在类内可以访问,但类的对象不可以访问;访问权限为私有的,在类内可以访问,但类的对象不可以访问。例7 “2006年上半年软件设计师试题”已知3个类O、P和Q,类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3:类P和类Q是类O的派生类,其继承方式如下所示:class P : protected O ;class Q : public O ;关于方法F1的描述中正确的是 (34) ;关于方法F2韵描述中正确的是 (35) ;关于方法F3的描述中正确的是 (36) 。(34)A方法F1无法被访问B只有在类O内才能访问方法F1C只有在类P内才能访问方法F1D只有在类Q内才能访问方法F1(35)A类O、P和Q的对象都可以访问方法F2B类P和Q的对象都可以访问方法F2C类0和Q的对象都可以访问方法F2D只有在类P内才能访问方法F2(36)A类0、P和Q的对象都可以访问方法F3B类0、P和Q的对象都不可以访问方法F3C类0和Q的对象都可以访问方法F3D类P和Q的对象都可以访问方法F3。解析:此例写成C+代码为#include class Oprivate:void F1() public:void F2() F1(); protected:void F3() ;class P: protected O ;class Q: public O ;void main() O o1;P p1;Q q1;o1.F2();p1.F2(); /错误。函数F2()是类P的保护成员,只能在类P内才能访问(即由类P的其它成员函数访问之),而不能在main函数中访问。q1.F2();(4) 派生类的构造函数 在派生类中继承的基类成员的初始化,需要由派生类的构造函数调用基类的构造函数去完成,形式为冒号后跟着“成员初始化列表”。构造函数的调用顺序:先调用基类的构造函数,然后调用派生类的构造函数。(5) 派生类的析构函数 析构函数的调用顺序和构造函数的调用顺序正好相反,即先调用派生类的析构函数,然后调用基类的析构函数。例8#include class Point public: Point(int x, int y) X=x; Y=y; Point(Point &p) X=p.X; Y=p.Y;void print()cout(X“,”Y“)”endl; Point() private:int X,Y;class Line : public Point private: int K; public: Line(int x,int y,int k):Point(x,y)K=k; /构造函数Line(Line &s) : Point(s) K=s.K; /拷贝构造函数; void print() cout “直线经过点”; Point:print(); cout “斜率为:k=” K endl; Line() /析构函数;void main() Line L1(1,1,2); L1.print(); Line L2(L1); L2.set(3,2,1); L2.print();上述程序中,Line类在公有继承Point类的基础上,又引入了新的成员和成员函数,其中有:私有成员K,构造函数Line,拷贝构造函数Line,析构函数 Line, 成员函数print。 Line类通过在平面上的一点和斜率描述平面坐标中的直线对象。例9 2005年软件设计师上午试题 已知3个类O、P和Q,类O中定义了一个私有方法F1和一个公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类,类Q为类P的派生类,它们的继承方式如下所示:class P: public O ;class Q: private P ;在关于类P的描述中正确的是 (43) ;在关于类Q的描述中正确的是 (44) 。+-P+F3O-F1+F2Q(43) A.类P的对象可以访问F1,但不能访问F2 B.类P的对象可以访问F2,但不能访问F1 C.类P的对象既可以访问F1,也可以访问F2 D.类P的对象既不能访问F1,也不能访问F2(44) A.类Q的对象可以访问F1、F2、和F3 B.类Q的对象可以访问F2和F3,但不能访问F1C.类Q的成员可以访问F2和F3,但不能访问F1D.类Q的成员不能访问F1、F2和F3例10 “软件设计师试题”p24 (47) 类的实例化过程是一种实例的合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和绑定。指导编译程序进行这种合成的是 (47) 。 (47)A.类层次结构 B.实例的个数 C.多态的种类 D.每个实例的初始状态4 C+的重载、虚函数与多态性多态性:不同的对象收到同一消息 “对象名.函数名(参数)” , 可以产生不同的结果,称为多态性。多态性又被直观地称为“一个名字,多个函数”。C+支持两种多态性:“编译时的多态性”(即静态绑定或静态联编,主要通过使用重载函数获得)和“运行时的多态性”(即动态绑定或动态联编,通过使用继承和虚函数获得)。4.1重载函数:函数名相同,参数类型或参数个数不同。(见1)4.2虚函数虚函数:用关键字 virtual修饰的函数。在类层次结构中,派生类的某一成员函数,若其函数名、参数类型、参数个数、返回类型与基类中的一个虚函数完全相同,则无论是否为该成员函数使用virtual ,它都将成为虚函数。当通过一个基类类型的指针(或引用)调用一个虚函数时,采用动态联编。但是,在通过一个对象访问虚函数时,则使用静态联编。包含有纯虚拟函数的类称为抽象类。纯虚拟函数的形式为:virtual ()=0;可以说明抽象类的指针(或引用),但不能说明抽象类的对象。例11 “2004年下半年程序员试题” 【说明】以下程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle, Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述三种图形面积的通用接口。【C+程序】#include #include class Figurepublic:virtual double getArea()=0;/纯虚拟函数,无函数体,用“=0”代替函数体。;class Rectangle: (1)protected:double height;double width;public:Rectangle();Rectangle(double height, double width)this-height=height;this-width=width;double getArea()return (2) ; ;class Square: (3)public:Square(double width) (4) ;class Triangle: (5)double la;double lb;double lc;public:Triangle(double la ,double lb,double lc)this -la=la; this-lb=lb; this-lc=lc;double getArea()double s=(la + lb+ lc)/2.0;return sqrt(s * (s-la) * (s-lb) *(s-lc);void main()Figure * figures3=new Triangle(2,3,3), new Rectangle(5,8),new Square(5) ;for (int i=0;i3;i+)coutfiguresiarea=getArea()endl;完整的程序如下:#include #include class Figurepublic:virtual double getArea()=0;class Rectangle: public Figureprotected:double height;double width;public:Rectangle();Rectangle(double height, double width)this-height=height;this-width=width;double getArea()return height * width ; ;class Square: public Rectanglepublic:Square(double width)this-height = this-width= width ;class Triangle: public Figuredouble la;double lb;double lc;public:Triangle(double la ,double lb,double lc)this -la=la; this-lb=lb; this-lc=lc;double getArea()double s=(la + lb+ lc)/2.0;return sqrt(s * (s-la) * (s-lb) *(s-lc);void main()Figure * figures3=new Triangle(2,3,3), new Rectangle(5,8),new Square(5) ;for (int i=0;i3;i+)coutfiguresiarea=getArea()endl;若用“引用”来调用虚函数,则如下面所示:void main()Rectangle r(5,8);Figure &f1=r;cout area of Rectangle =f1.getArea()endl;若通过一个对象访问虚函数时,使用静态联编,如下面所示:void main()Rectangle r(5,8);cout area of Rectangle =r.getArea()endl;5静态成员知识要点:(1)类的成员使用关键字static 进行修饰,则为静态成员。例如:class Testpublic:static int x;static void func(Test & r);(2)静态成员为该类的所有对象共享,即使还没有建立对象,静态数据成员就已经存在。所以,静态成员只与类名连用,如“类名: 静态成员名” ;不与对象名连用,如“对象名.静态成员名”是错误的。(3)在类中仅对静态数据成员进行“引用性说明” ,还必须在程序文件的某个地方对静态数据成员进行“定义性说明” ,在“定义性说明”中要对该数据成员进行成员名限定。例如:int Test : x = 25;(4)静态成员函数可以访问静态成员,也可以访问非静态成员,但访问非静态成员只能通过对象名(或指向对象的指针)来进行,因为静态成员函数没有this 指针。例12 #include class Testprivate:int a;static int x;public:void func() x=25;static void sfunc(Test & r)x=35;r.a=45;int Test : x = 15;void main() Test a;a.func();Test:sfunc(a);例13 “2005年上半年软件设计师试题” (知识点:静态数据成员,this指针)在关于类的实例化的描述中,正确的是 (45) 。(45) A.同一个类的对象具有不同的静态数据成员值B.不同的类的对象具有相同的静态数据成员值C.同一个类的对象具有不同的对象自身引用(this)值D.同一个类的对象具有相同的对象自身引用(this)值例14 “2005年下半年软件设计师上午试题” P8(49) 类描述了一组对象共同的特性,下列叙述中正确的是 (49) 。(49)A.类本身不能具有变量 B.对象具有类定义的所有变量的一份拷贝 C.对象间不能共享类定义的变量 D.可通过类名访问静态变量 (类变量)例15 “2006年上半年软件设计师试题”p7 (39)下列关于一个类的静态成员的描述中,不正确的是 (39) 。(39) A该类的对象共享其静态成员变量的值B静态成员变量可被该类的所有方法访问C该类的静态方法只能访问该类的静态成员变量D该类的静态数据成员变量的值不可修改例16 “2005年上半年软件程序员试题” 知识点:(1) 枚举型。(2) this指针。(3) switch case 语句。 说明 下面程序的功能是计算并输出某年某月的天数。C+程序#include using namespace std; (1) MonthJan, Feb, Mar, Apr, May, Jun, Jul, Aug ,Sep, Oct, Nov, Dec;class Datepublic:Date(int year, Month m_month) (2) year;if ( m_month Dec) monthJan;else monthm_month;Date();bool IsLeapYear() return (year%40 & year%100!0|year%4000);int CalculateDays()switch( (3) )case Feb:if ( (4) ) return 29;else return 28;case Jan: case Mar: case May: case Jul: case Aug: case Oct:case Dec: return 31:case Apr: case Jun: case Sep: case Nov : return 30:;private:int year;Month month;void main()Date day(2000,Feb);cout year(3)month(4)IsLeapYear()(5)CalculateDays()例17 “2005年上半年软件软件设计师试题” 知识点:(1)继承和派生类。(2)多态性、虚函数、动态联编。(3)对象成员。说明某绘图系统存在Point、Line、Squar三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了Xcircle类,但不是由Shape派生而来,它提供的接口不被系统直接使用。代码5-1既使用了XCircle 又遵循了Shape规定的接口,即避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码5-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:ShapeXCircle 功能Display()DisplayIt()显示图元图5-1ShapePointLineSquare 代码5-1class Circle: public (1) private:_(2) m_circle; public:void display()m_circle . (3) ; ; 代码5-2Class Factorypublic :_(4)_ getShapeInstance(int type)/生成特定类实例 switch(type)case 0: return new Point;case 1: return new Sguare;case 2: return new Line;case 3: return new Circle;default: return NULL;void main(int argc, char *argv)if (argc !=2)cout”error parameters!”endl; return;int type=atoi(argv1):Factory factory;Shape *s;S=factory. (5) ;if (s=NULL)cout”Error get the instance!”display0; (6) ;return;例17答案(1) shape(2) XCircle(3) displayIt()(4) shape *(5) getShapeInstance(type)(6) delete s解析:Shape是抽象类,类的定义为:class Shape public:virtual void display()=0;函数 double atoi(char *8)功能:把参数x所指向的字符串中存放的数字转换成整数。例18 “2004年下半年软件设计师试题” 试题六知识点:(1) 类的静态成员。(2) 指针函数。【说明】通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样,Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。【C+代码】#include class Configure _(1)_:Configure() ;/构造函数public:static Configure * Instance();public:int GetConfigureData()return data;/获取配置信息int SetConfigureData(int m_data)data=m_data; return data;/设置配置信息private:static Configure * _instance;int data; /配置信息;_(2)_=NULL;Configure * Configure: Instance() if (_instance= =NULL) _instance=_(3)_; /加载配置文件并设置内存配置信息,此处省略return _(4)_;void main() Configure *t =NULL;t=_(5)_;int d=t-GetConfigureData();/获取配置信息后进行其它工作,此处省略答案(1)private (2)Configure * Configure : _instance(3)new Configure(4)_instance(5)Configure : Instance()例18 “2006年上半年软件设计师上午试题” P7(38) 以下关于单身模式(Singleton)的描述中,正确的是 (38) 。(38)A它描述了只有一个方法的类的集合B它能够保证一个类只产生一个唯一的实例C它描述了只有一个属性的类的集合D它能够保证一个类的方法只能被一个唯一的类调用例19 “2005年下半年软件设计师下午试题” 试题五 知识点:(1) 对象成员。(2) 指向对象的指针。(3) 虚函数。(4) this 指针。说明在一公文处理系统中,开发者定义了一个公文类OfficeDoc, 其中定义了公文具有的属性和处理公文的相应方法。当公文的内容或状态发生变化时,关注此OfficeDoc 类对象的相应的DocExplorer 对象都要更新其自身的状态。一个OfficeDoc 对象能够关联一组DocExplorer 对象。当OfficeDoc 对象的内容或状态发生变化时,所有与之相关联的DocExplorer对象都将得到通知,这种应用被称为观察者模式。以下代码写在一个C+ 源文件中,能够正确编译通过。类图如下:关注子类1关注类公文类关注子类2公文类:关注子类nC+代码#include const OBS_MAXNUM = 20;/ 最多与OfficeDoc 对象相关联的 DocExplorer 对象的个数_(1)_;class DocExplorer /关注OfficeDoc 公文对象的类public:DocExplorer (_(2)_ *doc); / 构造函数 (3) void update(OfficeDoc *doc)=0;/更新自身状态的函数/其它相关属性和方法省略;class OfficeDoc/ 公文类private:DocExplorer *myObsOBS_MAXNUM;/关注此公文类的DocExplorer 类对象指针数组int index;/与OfficeDoc 对象关联的DocExplorer 对象的个数public:OfficeDoc()index=0; void attach(DocExplorer *o)/将一DocExplorer 对象与OfficeDoc 对象相关联if (index = OBS_MAXNUM | o = NULL) return;for (int loop = 0; loop index; loop+)if (myObsloop = 0) return;myObsindex = o;index+;void detach(DocExplorer *o) /解除某DocExplorer 对象与OfficeDoc 对象的关联if(o=NULL) return;for(int loop = 0;loop index; loop+)if(myObsloop = o)if (loop = index-2) myObsloop = myObsindex-1;myObsindex-1 = NULL;index-;break;private:void notifyObs()/ 通知所有的DocExplorer 对象更改自身状态for(int loop = 0; loop (4) ;/ DocExplorer 对象更新自身状态/其它公文类的相关属性和方法;DocExplorer:DocExplorer(OfficeDoc *doc)/DocExplorer 类对象的构造函数doc- (5) ; /将此DocExplorer对象与doc对象相关联 答案(1) class OfficeDoc(2) OfficeDoc(3) virtual(4) update(this)(5) attach(this)上述程序中还存在一些问题,如:DocExplorer类中的 update函数是纯虚函数,即DocExplorer类是抽象类,下面应有派生类; notifyObs() 函数不应该是私有的;等等。一个完整的程序如下所示:#include const OBS_MAXNUM = 20;class OfficeDoc;class DocExplorer public: DocExplorer(OfficeDoc *doc); virtual void update(OfficeDoc *doc)=0;class DocExplorer1: public DocExplorerpublic:DocExplorer1(OfficeDoc *doc):DocExplorer(doc);void update(OfficeDoc *doc) coutupdata e1endl;class DocExplorer2:public DocExplorerpublic:DocExplorer2(OfficeDoc *doc):DocExplorer(doc);void update(OfficeDoc *doc) coutupdata e2= OBS_MAXNUM | o = NULL) return;for (int loop = 0; loop index; loop+)if (myObsloop = 0) return;myObsindex = o;index+; void detach(DocExplorer *o)if(o=NULL) return;for(int loop = 0; loop index; loop+) if(myObsloop = o)if (loop = index-2) myObsloop = myObsindex-1;myObsindex-1 = NULL;index-;break; public: void notifyObs()for(int loop = 0; loop update(this);DocExplorer:DocExplorer(OfficeDoc *doc)doc-attach(this); void main()OfficeDoc a;DocExplorer1 e1(&a);DocExplorer2 e2(&a);a.notifyObs();coutfinish!endl;6 函数模板和类模板 C+加强了数据类型的匹配检查。 如果需要提供一种逻辑功能完全相同的函数(或一种结构完全相同的类),而编制这些函数(或这些类)的程序文本完全一样,其区别仅仅是处理的数据类型不同,则可以采用函数模板(或类模板)。6.1函数模板例:求两个数的较大值,在不同类型的情况下,可以采用以下形式。(1)重载函数的形式:#include int max(int a, int b) return ab?a:b;double max(double a, double b) return ab?a:b;void main() int a1=3, b1=4; double a2=1.6, b2=3.8;coutmax(a1,b1)endl;coutmax(a2,b2)endl;(2)函数模板的形式:#include template /表明T可以是任意的基本类型或用户定义的类型。class 只是符号,与类没有关系,也可以用 typename 代替。T max(T a, T b) /函数模板。在实例化期间,其中的T 用实际类型来替换。/以上两行必须紧接着,也可以写成同一行,如:/ template T max(T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业工人赋能新质生产力
- 民族工作培训课件
- 2025年耳鼻喉科常见疾病治疗方案考核答案及解析
- 挤压的概念及实计算
- 2025年肿瘤科恶性淋巴瘤分期与治疗模拟考试卷答案及解析
- 2025年肿瘤放疗计划设计模拟考试答案及解析
- 新质生产力理论与教育
- 2025年放射科医生影像学诊断实践考核答案及解析
- 2025年儿科感染性疾病诊治知识考核试卷答案及解析
- 2025年放射科常用影像学检查技术考核模拟答案及解析
- GB/T 11376-1997金属的磷酸盐转化膜
- FZ/T 64012.2-2001水刺法非织造布第2部分:卫生用卷材
- SCI论文的写作与发表课件
- 印刷产品检验报告
- 2022年贵州省人民医院医护人员招聘笔试试题及答案解析
- “数学悖论”-辛普森悖论
- 医疗器械临床试验GCP三套考试题
- 烧结岗位安全操作培训-PPT课件
- 【课件】1.2 点线传情——造型元素之点线面 课件-2021-2022学年高中美术人美版(2019)选修绘画
- 运动处方(课堂PPT)
- 物资储备与物流方案
评论
0/150
提交评论