华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十一讲 类与对象(III)面向对象提高

华东师范大学数学科学学院 目录页 School of Mathematical Sciences,ECNU Contents 常对象与常成员 2 对象数组与对象指针 3 向量类:vector 字符串类:string http://math.ecnu.edu.cn/~jypan
目录页 Contents 华东师范大学 数学科学学院 School of Mathematical Sciences, ECNU http://math.ecnu.edu.cn/~jypan 1 2 常对象与常成员 对象数组与对象指针 3 向量类:vector 4 字符串类:string

1 常对象与常成员 为什么需要常对象 ■ 常对象的声明 常数据成员、常函数成员 ■ 常引用 关键字const http://math.ecnu.edu.cn/~jypan 3
http://math.ecnu.edu.cn/~jypan 3 常对象与常成员 为什么需要常对象 常对象的声明 常数据成员、常函数成员 常引用 关键字 const 1

为什么常对象 为什么常对象: 将对象声明成常对象,可以有效地保护数据。 常对象的声明 const类名 对象名; //OK 类名const对象名; /OK ·常对象必须进行初始化 常对象:数据成员均为常量 不能通过常对象调用普通成员函数! 常对象只能作为常成员函数的目的对象! http://math.ecnu.edu.cn/-jypan
http://math.ecnu.edu.cn/~jypan 4 为什么常对象 常对象必须进行初始化 常对象:数据成员均为常量 为什么常对象: 将对象声明成常对象,可以有效地保护数据。 常对象的声明 const 类名 对象名; // OK 类名 const 对象名; // OK † 不能通过常对象调用普通成员函数! † 常对象只能作为常成员函数的目的对象!

常成员 口常成员函数 类型说明符 函数名(形参)const; ●常对象只能调用常成员函数 ·常成员函数可以被普通对象调用 ·无论对象是否为常对象,常成员函数的目的对象都将被视为常对象 口常数据成员 ●将数据成员声明为常量 ●必须初始化(采用参数初始化表,不能在构造函数内赋值) Example /假定数据成员a和b是常量,c是普通变量 Myclass:Myclass(int x,int y,int z):a(x),b(y) {c=z;} http://math.ecnu.edu.cn/~jypan 5
http://math.ecnu.edu.cn/~jypan 5 常成员 常对象只能调用常成员函数 常成员函数可以被普通对象调用 无论对象是否为常对象,常成员函数的目的对象都将被视为常对象 常成员函数 常数据成员 将数据成员声明为常量 必须初始化(采用参数初始化表,不能在构造函数内赋值) // 假定数据成员 a 和 b 是常量,c 是普通变量 Myclass::Myclass(int x, int y, int z): a(x), b(y) { c=z; } 类型说明符 函数名(形参) const; Example

常成员 class Myclass { void display()const; void show(); const int a; int b; } Myclass:Myclass(int x,int y):a(x){b y; 。。。。 int main ( Myclass obj1(2,3); const Myclass obj2(4,5); Myclass const obj3(6,7); obj1.display();//OK obj2.display();//OK obj3.display();//OK obj1.show();//OK obj2.show();/ERROR obj3.show();/ERROR } ex11 class_const.cpp http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 6 常成员 class Myclass { ... ... void display() const; void show(); ... ... const int a; int b; }; Myclass::Myclass(int x, int y): a(x) { b = y; } ... ... int main () { Myclass obj1(2,3); const Myclass obj2(4,5); Myclass const obj3(6,7); obj1.display(); // OK obj2.display(); // OK obj3.display(); // OK obj1.show(); // OK obj2.show(); // ERROR obj3.show(); // ERROR } ex11_class_const.cpp

常引用 口常引用 const类名&引用名; ·常引用可以绑定到常对象,也可以绑定到普通对象 ●不能通过常引用来修改常引用所绑定的对象 ● 普通引用不能绑定到常对象 ex11 ref const.cpp 在C+编程中,经常用常指针和常引用作函数参数,这样既可以节省存储 量和运算时间,又能保证数据的安全。 http://math.ecnu.edu.cn/~jypan
http://math.ecnu.edu.cn/~jypan 7 常引用 常引用 常引用可以绑定到常对象,也可以绑定到普通对象 不能通过常引用来修改常引用所绑定的对象 普通引用不能绑定到常对象 const 类名 & 引用名; 在 C++ 编程中,经常用常指针和常引用作函数参数,这样既可以节省存储 量和运算时间,又能保证数据的安全。 ex11_ref_const.cpp

2 对象数组与对象指针 ■对象数组的声明与初始化 指向对象的指针、this指针 特殊符号:-> 指向成员的指针 持久内存分配:new、delete http://math.ecnu.edu.cn/-jypan 8
http://math.ecnu.edu.cn/~jypan 8 对象数组与对象指针 对象数组的声明与初始化 指向对象的指针、this 指针 特殊符号:-> 指向成员的指针 持久内存分配:new、delete 2

对象数组的声明与引用 类名数组名[n]; /声明 数组名[k].成员名; /1使用 口对象数组的初始化:对每个元素都调用构造函数 Example Point(){x=0;y=0} Point(int a,int b){x=a;y=b; int main() Point A[2]={Point(),Point(2,3); http://math
http://math.ecnu.edu.cn/~jypan ... .. Point() { x=0; y=0} Point(int a, int b) { x=a; y=b; } ... ... int main() { Point A[2]={Point(), Point(2,3); ... ... } 9 对象数组的声明与引用 对象数组的初始化:对每个元素都调用构造函数 类名 数组名[n]; // 声明 数组名[k].成员名; // 使用 Example

对象指针 对象指针:指向对象的指针,存放对象的地址 ▣对象指针的声明 类名*对象指针名; Point a(1,2); Example Point pa =&a; 口用对象指针访问对象成员:“->” 对象指针名->成员名 //对象指针特有方式,推荐使用 (*对象指针名).成员名/1普通方式 口指向常对象的指针:const类名*对象指针名; http://math.ecnu.edu.cn/~jypan 10
http://math.ecnu.edu.cn/~jypan 10 对象指针 用对象指针访问对象成员:“ -> ” 对象指针的声明 Point a(1,2); Point * pa = &a; 对象指针:指向对象的指针,存放对象的地址 类名 * 对象指针名; 对象指针名->成员名 // 对象指针特有方式,推荐使用 (*对象指针名).成员名 // 普通方式 指向常对象的指针:const 类名 * 对象指针名; Example

this指针 this指针: 隐含在非静态成员函数中的特殊指针,指向目的对象,由系统自动生成 >this指针是常指针 ·若局部作用域中存在与类成员同名的标识符,则可以通过this指针 访问目的对象的成员,如数据成员与局部变量同名。 当通过对象调用(非静态)成员函数时,系统会自动生成指向该对象的hs指针。 ↑非静态成员函数有this指针,而静态成员函数没有this指针。 http://math.ecnu.edu.cn/~jypan 11
http://math.ecnu.edu.cn/~jypan 11 this 指针 ► this 指针是常指针 ► 若局部作用域中存在与类成员同名的标识符,则可以通过 this 指针 访问目的对象的成员,如数据成员与局部变量同名。 this 指针: 隐含在非静态成员函数中的特殊指针,指向目的对象,由系统自动生成 † 非静态成员函数有 this 指针,而静态成员函数没有 this 指针。 † 当通过对象调用(非静态)成员函数 时,系统会自动生成指向该对象的 this 指针
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十讲 类与对象(II)面向对象进阶.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第九讲 类与对象(I)面向对象基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第八讲 排序算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第七讲 输入输出与(C 语言)文件操作.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Pointers and Memory.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)内存分配——栈和堆.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)Fast and stable matrix multiplication.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)Gauss消去法求解线性方程组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)矩阵乘积快速算法——Strassen 算法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第六讲 指针.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(二)字符数组(字符串).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第五讲 数组(一)数值数组.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第四讲 函数.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分的近似计算(数值积分).pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)定积分数值计算.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第三讲 选择与循环.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第二讲 C++编程基础.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第一讲 计算机基础知识.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(应用阅读)IEEE浮点运算标准.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)课程介绍(授课教师:潘建瑜).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ vector使用方法.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十二讲 运算符重载与自动类型转换.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十三讲 继承与派生.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十四讲 多态.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十五讲 文件流与输出输入重载.pdf
- 华东师范大学:《C++ 语言程序设计》课程教学资源(课件讲稿)第十六讲 标准模板库(Standard Template Library,STL).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ Reference Card(C++ RC by Greg Book,2002).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)C++ RC by Mississippi State U.(2009).pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII码(256完整版)The ASCII Character Set.pdf
- 《C++ 语言程序设计》课程教学资源(应用阅读)ASCII 码——常用ASCII码.pdf
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Introduction(主讲:苏锐丹).pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Operating-System Structure.pptx
- 西安电子科技大学:《操作系统》课程教学资源(PPT课件)Processes.pptx
- 《移动互联网技术》课程教学资源(培训教材)Cisco Press - Building the Mobile Internet(Mark Grayson, Kevin Shatzkamer, Klaas Wierenga).pdf
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)01 课程介绍(主讲:苏锐丹).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)02 移动互联网概述.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 移动互联网技术(Android安全).ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 Android应用安全 Android application security.pptx
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 传输层移动性.ppt
- 西安电子科技大学:《移动互联网技术》课程教学资源(PPT课件)03 应用层移动性.ppt