第4章常量与引用

上传人:今*** 文档编号:108158665 上传时间:2019-10-22 格式:PPT 页数:22 大小:513.50KB
返回 下载 相关 举报
第4章常量与引用_第1页
第1页 / 共22页
第4章常量与引用_第2页
第2页 / 共22页
第4章常量与引用_第3页
第3页 / 共22页
第4章常量与引用_第4页
第4页 / 共22页
第4章常量与引用_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《第4章常量与引用》由会员分享,可在线阅读,更多相关《第4章常量与引用(22页珍藏版)》请在金锄头文库上搜索。

1、第四章 常量与引用,学习目标,了解define与const的区别 掌握const的不同应用 掌握引用方法 掌握引用拷贝构造函数的使用方法,const,for(int i=0; i=100;i+) ,#define MAX 100 #define fun(a) a*5 int s=fun(3+5);,fun(a)=3+5*5,const使用方法,格式: 注意: 尽量把const定义放进头文件里,由此通过包含头文件,把const定义放在一个需要放置的地方。 当定义一个常量(const)时,必须初始化,即赋初值给它。,const 类型名 对象名;,例如: const int MAX=100; int

2、 iDataListMAX;,const使用方法,程序设计中,如果不想改变某个数值,就应该声明它为“常量” 。常量的使用一是消除不安全因素,二是消除存储和读操作,使代码的执行效率更高。 例4-1 常数组与常对象。 const int DATALIST=5,8,11,14; /合法使用,定义一个常量数组 struct MyStructint i; int j; const MyStruct sList=1,2,3,4; /正确,定义一个结构体常量数组 char cListDATALIST1; /错误 float fListsList0.i; /错误,const与指针,const与指针的结合使用,

3、有两种情况: 用const修饰指针,即修饰存储在指针里的地址; 修饰指针指向的对象。为防止混淆使用,采用“最靠近”原则。 指向常量的指针 定义格式 例如: const int *p; int const *p;,const 类型名* 指针变量名;,const与指针,常指针 定义格式 例如: int i=4; int *const q= /可以把非const对象地址赋值给const对象指针,类型名* const 指针名;,const与指针,可以用指向字符的指针来指向字符串,例如: char *p= “hello!”; const char *q=“hello!“; /正确,非const指针,co

4、nst数据 const char *const p=“hello!”; /正确,const指针,const数据 可以把非const数据对象地址赋给const指针,但是不能把const对象的地址赋给指向非const对象的指针 int i=5; const int j=3; int *p= /强制转换,合法,但是不建议这样使用,const与函数,函数与const结合应用有两种方式:参数为const类型;返回值为const类型。 const类型参数 定义格式 例如 void f(const int i) i+; /错误 void f(const int* p) (*p)+; /错误 ,返回值类型 函

5、数名称(const 类型 参数名, ),const应用,const类型返回值 可以用const修饰符修饰函数的返回值,即函数返回一个常量值,此常量值既可以赋给常量(对常量初始化),也可以赋给变量。 例4-2 返回值为常量的函数 例4-3 常对象的使用 const在传递地址中的应用 在函数的实参与形参结合时的传递地址过程中,对于在被调用的函数中不需要修改的指针或对象,用const修饰是合适的。 例4-4 常指针使用举例,const与类,在类里建立一个const成员时不能赋初值,只能在构造函数里对其赋初值,而且要放在构造函数特殊的地方。,class conClass const int NUM;

6、public: conClass(); ; conClass:conClass():NUM(100),错误示例: class conClass const int NUM=100; /错误 int iDataNUM; /错误 public: conClass(); ;,const与类,静态常量,class Student static const int NUM=30; int iScoreListNUM; ;,const int Student:NUM;,class Student static const int NUM; ; const int Student:NUM=30;,const

7、与类,enum(枚举),class Student enum NUM=30; int iDataNUM; public: conClass(); ;,enum MAX=100,SUM=200,NEXT;,const与类,常对象与常成员函数 const int i=10; const conClass cTest(10); const成员函数定义格式 例4-5 const成员函数与非const成员函数使用方式比较,class 类名 返回值类型 成员函数名称(参数列表) const; ;,引用(&),引用是C+的一大特点,是支持C+运算符重载的语法基础,也为函数参数的传入与传出提供了便利。如果不想

8、改变参数,则可通过常量引用传递。 引用被认为是某个变量或对象的别名,引用定义格式 : 例如: int x; int 引用类型使用方法举例,类型名 ,引用(&),引用( /错误,没有初始化,引用(&),为引用再提供一个引用,也是合法的,例如: int x=5; int /错误,引用与指针,引用与指针有着本质的区别,指针通过变量的地址来间接访问变量,而引用通过变量的别名来直接访问变量。 例4-9 指针和引用使用方法的对比 例4-10 数组、指针和引用的使用方法对比,引用与函数,采用引用的主要用途之一就是做函数的参数使用。首先看一则经典的使用函数交换两个变量值的例子。 例4-11 使用指针和引用交换

9、对比。 例4-12 不能返回一个不存在的或已销毁的变量的引用。,int /正确,x为一静态对象, 不会随着函数tcite2()的结束而结束 ,引用与函数,例4-13 正确使用指针和引用做返回值的例子。 例4-14 对常量引用的例子。,void t1(int /正确,在函数t2()中,参数声明为常量 ,拷贝构造函数,不仅可以由构造函数创建对象,也可以通过已有对象创建新对象。 例4-15 统计类声明对象个数。 拷贝构造函数定义格式 例4-16 例4-15修改的例子。 例4-17 跟踪程序运行时,当前Point类对象的个数。,构造函数名(const 类名,class A Public: A(); /构造函数 A(const A /拷贝构造 函数 ,拷贝构造函数,使用拷贝构造函数时注意以下问题: 并不是所有的类声明中都需要拷贝构造函数。仅当准备用传值的方式传递类对象时,才需要拷贝构造函数。 为防止一个对象不被通过传值方式传递,需要声明一个私有(private)拷贝构造函数。因为拷贝构造函数是私有的。已显式地声明接管了这项工作,所以编译器不再创建默认的拷贝构造函数。 例4-18 声明私有的拷贝构造函数。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号