《C++程序设计教程》教学资源(PPT课件讲稿)第6讲 数组、指针与字符串

C+语言程序设计 第6讲:数组、指针与字符串
C++语言程序设计 第6讲: 数组、指针与字符串

友元 friend 癱友元是C+提供的一种破坏数据封装和数 据隐藏的机制。 通过将一个模块声明为另一个模块的友元, 个模块能够引用到另一个模块中本是被 隐藏的信息。 可以使用友元函数和友元类 癱为了确保数据的完整性,及数据封装与隐 藏的原则,建议尽量不使用或少使用友元
友元 friend 友元是C++提供的一种破坏数据封装和数 据隐藏的机制。 通过将一个模块声明为另一个模块的友元, 一个模块能够引用到另一个模块中本是被 隐藏的信息。 可以使用友元函数和友元类。 为了确保数据的完整性,及数据封装与隐 藏的原则,建议尽量不使用或少使用友元

例5-6:使用友元函数计算两点距离 a1 ass point// Point类声明 public //外部接口 Point(int xx=o, int yy=o)X=xx; Y=yy i b nt Getxoi return xi int Gety( return Y, I friend float fDist (Point &a, point &b) private //私有数据成员 int Xy float fDi int main() double d i point myp(1 of, 1. 0f), myp2 (4. 0f, 5. 0f) double cout<<The distance is i re七urn cout<< fDist (mypl, myp2) << endli return 0:
例5-6: 使用友元函数计算两点距离 class Point //Point类声明 { public: //外部接口 Point(int xx=0, int yy=0) {X=xx;Y=yy;} int GetX() { return X; } int GetY() { return Y; } friend float fDist (Point &a, Point &b); private: //私有数据成员 int X,Y; }; float fDist ( Point& a, Point& b ) { double dx = a.X-b.X; double dy = a.Y-b.Y; return (float)sqrt(dx*dx+dy*dy); } int main() { Point myp1(1.0f, 1.0f), myp2(4.0f, 5.0f); cout<<"The distance is “; cout<< fDist (myp1, myp2) << endl; return 0; }

友元类 class A friend class B void B: Set(int i) public void Display cout < x < endl F private Int xi 访问A的私有成员 class B ⅴoidB:: Display() I public void Set(int i) void Display() a Display ()i private: aa 但在A中不能访问B的私有成员
友元类 class A { friend class B; public: void Display() { cout << x << endl; } private: int x; } class B { public: void Set(int i); void Display(); private: A a; }; void B::Set(int i) { a.x = i; } void B::Display() { a.Display(); } 访问A的私有成员 但在 A 中不能访问 B 的私有成员。!!!

常类型 const 常类型是只读的意思 癱常类型的对象必须进行初始化,而且不能 被更新 癱常引用:被引用的对象不能被更新 const类型说明符&引用名 常对象:必须进行初始化,不能被更新 类名 cons t对象名
常类型 const 常类型是只读的意思。 常类型的对象必须进行初始化,而且不能 被更新。 常引用:被引用的对象不能被更新。 const 类型说明符 &引用名 常对象:必须进行初始化,不能被更新。 类名 const 对象名

常对象举例 class A public: A(int ir int 3)(x i Y j;} private int x,yi A const a(3,4);//a是常对象,不能被修改
常对象举例 class A { public: A(int i,int j) { x = i; y = j; } ... private: int x,y; }; A const a(3,4); // a是常对象,不能被修改

例5-8:常成员函数举例 class R public: R(int rl int r2)i RI rl; R2= r2; void print o)i void print()consti private int Rl r2: int main() void R:: printo) Ra(5,4); f cout<<R1<<" <<R2<4 a print( //调用 void print() void R:: print()cons const R b(20,52)i b. print () cout<<R1<<";"<<R2< //调用 void print() const
例5-8: 常成员函数举例 class R { public: R(int r1, int r2){ R1 = r1; R2 = r2; } void print(); void print() const; private: int R1,R2; }; void R::print() { cout<<R1<<":"<<R2<<endl; } void R::print() const { cout<<R1<<";"<<R2<<endl; } int main() { R a(5,4); a.print(); //调用void print() const R b(20,52); b.print(); //调用void print() const }

例5-9:常数据成员举例 class A public int main() A(int i) /*建立对象a和b,并以100和0作为初值, void print() 分别调用构造函数,通过构造函数的初始化 const int& r 列表给对象的常数据成员赋初值* private Aa1(100),a2(0); const int ai al.print()i static const int b a2.print() const int A: b=10; 运行结果: A: A(int i): a(i)r(a)[] void A:: printo 100:10:100 cout<<a<<":"<<b<<":"<<r<< 0:10:0
例5-9: 常数据成员举例 class A {public: A(int i); void print(); const int& r; private: const int a; static const int b; //静态常数据成员 }; const int A::b=10; A::A(int i): a(i), r(a) {} void A::print() { cout<<a<<":"<<b<<":"<<r<<endl; } int main() {/*建立对象a和b,并以100和0作为初值, 分别调用构造函数,通过构造函数的初始化 列表给对象的常数据成员赋初值*/ A a1(100),a2(0); a1.print(); a2.print(); } 运行结果: 100:10:100 0:10:0

数组 数组必须先声明,后使用 维数组的声明 数据类型数组名[常量表达式] 例如:intb[0 表示b为整型数组,有10个元素:b[O]..b[9] 多维数组的声明: 数据类型标识符[常量表达式们常量表达式2] ●例如:inta[5][3] 表示a为整型二维数组,其中第一维有5个下标 (0~4),第二维有3个下标(0~2),数组的元素个 数为15,可以用于存放5行3列的整型数据表格
数组 数组必须先声明,后使用。 一维数组的声明: 数据类型 数组名[ 常量表达式 ]; 例如:int b[10]; 表示 b 为整型数组,有10个元素:b[0]...b[9] 多维数组的声明: 数据类型 标识符[常量表达式1][常量表达式2] …; 例如:int a[5][3]; 表示a为整型二维数组,其中第一维有5个下标 (0~4),第二维有3个下标(0~2),数组的元素个 数为15,可以用于存放5行3列的整型数据表格

例6-1 输出 int main o 新intA[10],B[10]; A[0]=-1B[0]=17 for(inti=0;<10;立++) A[1]=1B[1]=15 A[]=*2-1; A[2]=3B[2]=13 B[10-1-1]=A[i]; A[3]=5B[3]=11 for(=0;<10;1++) A[4]=7B[4]=9 A[5]=9B[5]=7 cout<<"A["<<主<"] cout < Bl<< i<<nA[6]=11BI6]=5 A[7]=13B[7]=3 A[8]=15B[8]=1 A[9]=17B[9]=-1
int main() { int A[10], B[10]; for(int i=0;i<10;i++) { A[i]=i*2-1; B[10-i-1]=A[i]; } for(i=0;i<10;i++) { cout << "A[" << i << "]=“ << A[i]; cout << " B[" << i << "]=" << B[i]<<endl; } } 例6-1:数组的说明与使用 输出: A[0]=-1 B[0]=17 A[1]=1 B[1]=15 A[2]=3 B[2]=13 A[3]=5 B[3]=11 A[4]=7 B[4]=9 A[5]=9 B[5]=7 A[6]=11 B[6]=5 A[7]=13 B[7]=3 A[8]=15 B[8]=1 A[9]=17 B[9]=-1
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《C++程序设计教程》教学资源(PPT课件讲稿)第7讲 MFC简介.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第7讲 继承与派生(1/2).ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第8讲 继承与派生(2/2).ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第9讲 运算符重载.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第10讲 运算符重载.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第11讲 虚函数(1/2).ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第12讲 虚函数(2/2).ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)MFC简介.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第2讲 MFC简介.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)复习.ppt
- 《C++程序设计教程》教学资源(讲义)FORTRAN.doc
- 《C++程序设计教程》教学资源(PPT课件讲稿)第1讲 绪论.ppt
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)附录ABC.doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)教材介绍.doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)课程介绍.doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)附录B:术语汇编.doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)第24章 JavaScript使用.doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)第23章 可扩展超文本标记语言(XHTML).doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)第22章 可扩展标记语言(XML).doc
- 清华大学:《多媒体技术》课程教学资源(教材教案讲义)第21章 超文本标记语言(HTML).doc
- 《C++程序设计教程》教学资源(PPT课件讲稿)第5讲 C++程序的结构.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第4讲 类与对象.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第3讲 更好的C.ppt
- 《C++程序设计教程》教学资源(PPT课件讲稿)第2讲 C++简单程序设计.ppt
- 《C++程序设计教程》教学资源(讲义)PASCAL.doc
- 《计算机文化基础》创造计算机的神话——比尔·盖茨.ppt
- 《计算机文化基础》课程教学资源(讲解内容).doc
- 《计算机图形学》课程教学资源:第1章 绪论.ppt
- 《计算机图形学》课程教学资源:第2章 图形系统.ppt
- 《计算机图形学》课程教学资源:第3章 基本图形生成算法.ppt
- 《计算机图形学》课程教学资源:第4章 图形变换.ppt
- 《计算机图形学》课程教学资源:第5章 曲线和曲面.ppt
- 《计算机图形学》课程教学资源:第6章 几何造型.ppt
- 《计算机图形学》课程教学资源:第7章 消隐.ppt
- 《计算机图形学》课程教学资源:第8章 真实图形.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第一章 Hello. C!.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第二章 基本数据类型.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第三章 运算符与表达式.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第四章 顺序结构程序设计.ppt
- 《C语言程序设计》课程教学资源(PPT课件讲稿)第五章 选择结构程序设计.ppt