第3讲类和对象举例.ppt
《第3讲类和对象举例.ppt》由会员分享,可在线阅读,更多相关《第3讲类和对象举例.ppt(47页珍藏版)》请在三一文库上搜索。
1、C+程序设计,第3讲 类和对象的简单应用举例,#include void swap3(int ,输出: x=9,y=5 a=9,b=5,例:分析下列程序的输出结果(引用调用)。,用const限定引用,由于引用作为参数时,函数内对引用的修改等于对实参的修改,因此一不注意就会造成错误。保护实参不被修改的方法是传递const指针或const引用。,Void swap(const int /不允许,ry是常量引用 ,符号常量:,const 类型定义符 符号名=初值;,例如: const int PRICE=30;,经const修饰后便不能修改此符号名之值。 例: const int sumValue=
2、10; 对于简单类型的常量,const可在类型符的前或后 或 int const sumValue=10; sumValue=0; /错误,使用const的目的是替代C语言中的编译预处理命令#define(常量定义),但比它更加语义精确,因为#define无法准确地反映常量的数据类型。,void main() const double PI = 3.1415926535898; /定义圆周率常量PI double radius; /定义圆半径变量 double area; /定义圆面积变量 double circumference; /定义圆周长变量 cout radius; area = P
3、I*radius*radius; circumference = 2.0*PI*radius; cout “Area of circle of radius ” radius “ is ” area “ n”; cout “and its circumference is ” circumference “ n”; radius=25.6; /正确 PI=2.5; /错误 ,1. const是一个类型说明符,它将一个变量变为一个符号常量(相当于一个只读变量)。例如: const double PI=3.14; /常量经常用大写名称表示 用const定义的PI为符号常量,不仅有数据类型,而且还有
4、值,必须要有初值,其值在程序中不可变。编译时会做检查。 #define PI 3.14 / 是一个无参宏定义 无参宏不是符号常量,没有数据类型,没有值,在内存中不分配地址。宏定义在预编译时,只进行简单的替换,不做语法检查。,const与#define的区别:,2.由#define所定义的符号名为全局性常量,因而在整个程序中应保持符号名的唯一性;用#define定义的常量的作用域是从定义时开始,直到使用#undef取消定义时为止,如果不取消定义,直到整个文件结束 const可以说明一个局部或全局性同名常量(据此可以改变const符号名之值)。 3.另外在语法方面,#define为编译预处理命令,
5、而const为定义符,语句以“;”结束。,#define Min 1 const int Max=100; void main(void) #define Min 2 /错误,不能再定义同名常量 const int Max=200; /可以再定义同名局部常量 ,1. 类和对象的简单应用举例,#include class Time public: int hour, minute, sec; ; int main( ) Time t1; cint1.hour; cint1.minute; cint1.sec; coutt1.hour“:“t1.minute“:“t1.secendl; retur
6、n 0; ,/定义Time类,/数据成员为公用的,/定义Time类的对象t1,/为t1的成员输入数据, /其中通过对象名引用其数据成员,例1、最简单的例子(引用一个对象),在引用成员时,不要忘记对象名,如果删去这3个输入语句,则输出结果是不可预知的,1. 类和对象的简单应用举例,#include class Time private: int hour, minute, sec; public: void inputtime() cinhour; cinminute; cinsec; void outtime() couthour“:“minute“:“secendl; ;,/定义Time类,
7、/数据成员为私有的,例1、最简单的例子(引用一个对象),void main( ) Time t1; t1.inputtime(); t1.outtime(); ,1.1 类和对象的简单应用举例,void main() Time t1,t2,t3; /定义对象t1、t2、t3 t1.inputtime(); t1.outtime(); t2.inputtime(); t2.outtime(); t3.inputtime(); t3.outtime();,例2a、引用多个对象的成员,8.5 类和对象的简单应用举例,例2b、引用多个对象的成员,void set_time(Time ,8.6 类和对象
8、的简单应用举例,例2c、引用多个对象的成员,数据成员的值不再由键盘输入,而是在调用函数时由实参提供,并在函数中使用了默认参数。,#include using namespace std; class Time private: int hour, minute, sec; public: void settime(int h,int m,int s) hour=h; minute=m; sec=s; ,void shoutime() couthour“:“minute“:“secendl; ;,int main() Time t1; t1.settime(12,15,10); t1.shout
9、ime(); return 0; ,#include class Time private: int hour, minute, sec; public: void settime(int h,int m,int s=20) hour=h; minute=m; sec=s; void shoutime() couthour“:“minute“:“secendl; ; int main() Time t1; t1.settime(12,15); t1.shoutime(); return 0; ,输出结果:12:15:20,函数参数的求值顺序,当一个函数带有多个参数时,C+语言没有规定函数调用时
10、实参的求值顺序;,编译器根据对代码进行优化的需要自行规定对实参的求值顺序;,在实参中注意不要使用带有副作用的运算符,此时可能产生二义性;,下例由于使用对参数求值顺序不同的编译器造成的二义性。,函数参数的求值顺序,#include int add(int x,int y) return x+y; void main() int x(4),y(6); int z=add(+x,x+y); coutzendl; ,可能的结果(按照编译器对实参求值顺序不同):,自左至右,两个实参的值分别为5和11;,自右至左,两个实参的值分别为5和10;,注意: 函数参数求值顺序与参数默认值补足顺序不同 参数求值顺序
11、:由编译器决定求值方向; 参数默认值补足顺序:自左向右,设置函数参数的默认值(缺省参数),C+中,在函数声明或定义时可以为一个或多个参数指定缺省参数值;,int add(int x,int y=10);,进行函数调用时,若未指定足够的实参,则编译器将按从左向右的顺序用函数声明或定义中的缺省值来补足所缺少的实参;,设置函数参数的默认值(续),在一个指定了缺省值的参数的右边,不能出现没有指定缺省值的参数;,void f(int x,int y=1,int z);,在给某个参数指定缺省值时,不仅可以是一个数值,而且可以是任意复杂的表达式;,int f(); void delay(int k,int
12、time=f();,错误,例如:f(2,4);理想:f(2,1,4),实际:z参数未被赋值,1. 类和对象的简单应用举例,例3、找出一个整型数组中的最大元素,这里使用类来处理。,#include using namespace std; class Array_max public: void set_value( ); void max_value( ); void show_maxvalue( ); private: int array10; int max; ; void Array_max:set_value( ) for (int i=0;iarrayi; ,void Array_m
13、ax:max_value( ) max=array0; for(int i=1;imax) max=arrayi; void Array_max:show_maxvalue( ) cout“max=“max; int main( ) Array_max arrmax; arrmax.set_value( ); arrmax.max_value( ); arrmax.show_maxvalue( ); return 0; ,可以看出,主函数十分简单,只需调用有关对象的成员函数,以完成相应的操作。 在面向对象的程序设计中,最关键的工作是类的设计,所有的数据和对数据的操作都体现在类中。,例3、找出一
14、个整型数组中的元素的最大值,#include using namespace std; class Array_max public: void set_value( ); void max_value( ); void show_value( ); private: int array10; int max; ; void Array_maxset_value( ) int i; for (i=0;iarrayi; void Array_maxmax_value( ) int i; max=array0; for (i=1;imax) max=arrayi; ,void Array_maxs
15、how_value( ) coutmax=max; int main( ) Array_max arrmax; arrmax.set_value( ); arrmax.max_value( ); arrmax.show_value( ); return 0; ,/声明类,/以下3行为成员函数原型声明,/对数组元素设置值,/找出数组中的最大元素,/输出最大值,/整型数组,/成员函数定义,向数组元素输入数值,/成员函数定义,找数组元素中的最大值,/定义对象arrmax,/调用arrmax的set_value函数,向数组元素输入数值,/调用arrmax的max_value函数,找出数组元素中的最大值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象 举例
链接地址:https://www.31doc.com/p-2528200.html