中国高校课件下载中心 》 教学资源 》 大学文库

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

文档信息
资源类别:文库
文档格式:PPT
文档页数:26
文件大小:123.5KB
团购合买:点击进入团购
内容简介
一、友元是C++提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元,一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。
刷新页面文档预览

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

共26页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档