《复习串讲(chp2,3,4).》由会员分享,可在线阅读,更多相关《复习串讲(chp2,3,4).(52页珍藏版)》请在金锄头文库上搜索。
1、第二章 从结构到类的演变 一、结构的演化 C+中允许结构中定义函数,这些函数称为 。 成员函数 1、在结构中,没有使用private定义的成员,默认为 。 public 2、私有的数据成员,必须通过公有的成员函数才能使用 ,这称为数据的 性。封装 3、与结构不同的是,类使用 关键字来定义, 其成员默认的性质是 。而结构使用 关 键字来定义,其成员默认的性质是 。 private class pubic strcut 4、私有的数据成员必须通过公有的成员函数才能使用 ,这就称为数据的 性。封装 5、使用关键字 代替struct,就是一个标准的类 。 class 和传统的程序设计方法相比,面向对象
2、的程序设计具有 、 、 和 等关键要素。 C+中对象是描述客观事物的一个实体,是构成系 统的基本单位。可以使用 、 和 三 要素来描述一个对象。 二、面向对象程序设计的特点 抽象封装集成多态性 对象名属性操作 三、string类 1、该类是该类是C+C+语言中的内部预定义类,要在程序中使用语言中的内部预定义类,要在程序中使用 该类时必须添加头文件该类时必须添加头文件 . .#include #include 2、会定义string类的对象 string 对象名 3、定义的同时初始化 格式:string 对象名(初始值) string 对象名=初始值 如:如:string str1 (“hell
3、o,”)string str1 (“hello,”); string str2 =“world”string str2 =“world” string str3 =worldstring str3 =world; string str4=astring str4=a; 正确初始化的正确初始化的stringstring对象,可以用下标形式使用对象中的对象,可以用下标形式使用对象中的 字符字符 str10str10的值是?的值是? str20str20的值是?的值是? h w X X X X 4、string类常用的几个成员函数 1) size() :求对象的长度。 2) substr() :求字
4、符串的子串 格式:substr(int start,int length) 功能:从start位置开始,截取length个长度的字符串。 3) find( ) :字符串检索 格式:find( 要查找的字符串,开始查找的位置) 功能:从指定位置开始查找所需的字符串,如果找到了 ,则返回字符串在主串中的位置,如果没有没到则 返回 。-1 4、+:将前后两个字符串连接字符串连接 5、begin():指示第一个元素位置 end():指示最后一个元素之后的位置 四、complex类 1、该类是该类是C+C+语言中的内部预定义类,要在程序中使用语言中的内部预定义类,要在程序中使用 该类时必须添加头文件该类
5、时必须添加头文件 . .#include #include 2、会定义complex类的对象 complex 对象名(实部,虚部) 例如:complex x(2,3) complex x(2.5,3.6) 两个成员函数 和 分别用来输出对象的 实部和虚部。 real()imag() 1在C+中,封装是借助什么达到的?( ) A结构 B类 C数组 D函数 2.假定AA为一个类,a()为该类公有的函数成员,x 为该类的一个对象,则访问x对象中函数成员a()的 格式为( ) A.x.a Bx.a() Cx-a Dx-a() 3对象的四大基本特性是多态性、继承性、_ 和封装性。 抽象性 B B 练习
6、4为了使类中的成员不能被类外的函数通过成员操 作符访问,则应把该成员的访问权限定义为_。private 5.C+允许在结构中定义函数,这些函数称为( ) A.静态函数 B.构造函数 C.析构函数 D.成员函数 D. 6.C+类中定义的成员默认访问属性为( ) A.public B.private C.protected D.friend B 7.使用string.h库操纵字符串时,将两个字符串连 接成一个字符串的函数是( ) A.strlen() B.strcpy() C.strcat() D.strcmp() 8.在C+标准库中,用_类来表示复数。 9.能提供封装的C+关键字是_。 C co
7、mplex private 11在使用string类的find成员函数来检索主串中 是否含有指定的子串时,若在主串中不含指定的子串 ,find函数的返回值是_。-1 12.使用string类建立对象的不正确方式是( ) A. string str(“OK”) B. string str=“OK” C. string str; D.string str=OK D 第三章 函数和函数模板 一、函数的参数及其传递方式 C+的函数参数有两种传递方式: 和 。 传值传引用 对象作函数参数,是将实参对象的 传递给形参对象, 形参拥有的实参的备份。这种传递是 的。 值 单向 1、直接使用基本数据类型的对象,
8、或使用类和结构的 对象作为参数,均是 方式。 传值 2、将指向对象的指针作为函数参数,形参是对象指针, 实参可以是对象的地址或者指向对象的指针。 3、引用做函数参数,实参是对象名称,实参是引用。 在函数调用时,实参对象名传给形参对象名,形参对象 名就成为实参的别名。实参和形参是同一个对象,所以 改变形参对象的值就是改变实参对象的值。 练习: 1.已知函数 f 的原型是 void f(int *a, long B.B. int f1( float i=0, char c=a) ; C. float *f( float, float) ; D. double abc( int a=0, int b
9、); D 三、如果不希望在函数中改变形参的值,则可以使用 关键字来保护形参。const 例题: 1)找出下面程序段中的错误 int fun( int x, const int y) int z ; y+ ; z=x+y ; return z ; 形参y使用const修 饰,只能被使用不 能改变 2)不允许改变函数参数的函数原型声明是( ) A.String input(const int); B.string input(int 的含义是 : 定义函数f1,含有两个形参,一个为单精度实型,另 一个为基本整型,返回一个整型的引用 2)函数 compute的 返回值是一个单精度实型引用,含 有三个
10、参数,前两个为整型,第三个为单精度实型,则声 明此函数的原型为: float else return b; max(3,8); max(3.6,12.5); max(a,A); max(3,8); max(3.6,12.5); max(a,A); max(97,A); max(97,int(A); 判断下列函数模板的使用正确与否: X 例题: 给出下面程序的输出结果 #include using namespace std; template T add(T x,T y) return x+y ; void main( ) coutadd(1,7) tadd(2.0,5.0)endl; 87
11、例题.1)在下划线处填上缺少的部分。源程序如下(2009.1) #include using namespace std; _ T fun(T x) _y; y=x*x-T(5); return y; void main() float a=2; couty?x:y; Type max( Type x, Type y ) 3)下列程序的运行结果如下(2010.1 第50题) x=22,y=22 根据结果将程序补充完整。 #include template void f( T1 else y=(T2)x; void main() double x=134.2; int y=22; f(x,y);
12、 coutx=x,y= 4)成员函数在类体外定义时,须加上类名限定: 类名:函数类型 函数名(参数) /函数体 二、c+中可以自动进行对象初始化的函数 函数 。 构造 2、当没有为一个类定义任何构造函数的情况下,c+编译 器总要自动建立一个不带参数的构造函数。 如有一个类Person,则其默认函数形式为: Person() 3、一旦程序员定义了自己的构造函数,系统就不再提供默 认构造函数。 1、构造函数名称与 同名,而且 返回值。类没有 4、用new运算符产生对象时,new和 一起作用 。 构造函数 用new建立的动态对象只能用 删除,以便释放所占空间 。 delete 5、一个类可以有 个构造函数;多 如果一个类有多个构造函数,由于它们 相同但是 不 同,所以它们之间是一种 关系。 名称参数 重载 6、对象定义时,构造函数被自动调用,根据对象定义形式调 用不同的构造函数。定义对象未初始化时,则调用 构造 函数,定义对象并初始化时,调用 构造函数。(填写“无 参”或者“有参”) 无参 有参 三、在使用一个类的对象初始化另一个对象时,调用该类的 函数。 复制(拷贝)构造 赋值构造函数必须使用