DISTANCELEARNINGSCHOOL OF ZHEJIANG UNIVERSITY 浙江大学远程教育学院 ERSITY 任课教师:毛根生 课程名称:面向对象程序设计 课程代码:0704007 第8讲 教师mi:mxdxcxsj-t@dlczju.edu.cn 2003-2004学年第二学期
毛根生 面向对象程序设计 0704007 mxdxcxsj-t@dlc.zju.edu.cn 8
23.10作用域运算符 当全局变量和局部变量同名时,函数中不能使用全局变量。 ∥例212 #include <iostream.h> int avar=10;∥局变量 void main( { int avar=25;∥局部变量 cout<<avar is <<avar<<endl 仑局部变量 可用作用域运算符:∥例213 #include <iostream. h> int avar void main( i int avar avar=25;∥局部变量avar avar=10;∥全局变量avar couts< local avar= <<avars<endl: cout<<global avar=w<<:: avar<<end;
2.3.10 作用域运算符:: 当全局变量和局部变量同名时,函数中不能使用全局变量。 //**例2.12 #include <iostream.h> int avar=10; //全局变量 void main( ) { int avar=25; //局部变量 cout<<"avar is "<<avar<<endl; } 局部变量 可用作用域运算符 :: //**例2.13 #include <iostream.h> int avar; void main( ) { int avar; avar=25; //局部变量avar ::avar=10; //全局变量avar cout<<"local avar = "<<avar<<endl; cout<<"global avar = "<<::avar<<endl; } 15
23.1无名联合 C语言的共用体: union data 4字 nt 节 char ch float f: ch union data a, b 引用: a i ach af等 C++的无名联合: union i int i; char ch float f: 直接可用ichf等
2.3.11 无名联合 C语言的共用体: union data { int i; char ch; float f; } union data a,b,c; 引用:a.i a.ch a.f 等 C++的无名联合: union { int i; char ch; float f; } 直接可用 i ch f 等 16 a 4 字节 i ch f
2312强制类型转换 C语言的强制类型转换: int i=10 float x=(float) C++的强制类型转换: int i=10; float x=float(i) float y=(float)i 两种方法C++都可以
2.3.12 强制类型转换 C语言的强制类型转换: int i=10; float x=(float)i; C++的强制类型转换: int i=10; float x=float(i); float y=(float)i; 两种方法C++都可以。 17
23.13new和 delete C语言用函数mac()和 freeD动态分配内存和释放动态分配的 内存。C++使用运算符new和 delete能更好、更简单地进行内存的分 配和释放。 如C语言中用: int*p p=(int )malloc( sizeof(int)) 10 而C++语言中/*214 #include <iostream.h> void main( f int*p; ∥定义一个整型指针变量p p= new int;动态分配一个整型存储区,并把首地址赋给p 10 cout<<“p<<endl delete p;∥释放p指的空间,撤消指针p new和 delete的优点: )new可以自动计算所要分配内存的类型的大小,而不必用 sizeof 来计算
2.3.13 new和delete C语言用函数malloc()和free()动态分配内存和释放动态分配的 内存。C++使用运算符new和delete能更好、更简单地进行内存的分 配和释放。 如C语言中用: int *p; p=(int *) malloc ( sizeof(int) ); *p=10; 而C++语言中 //**2.14 #include <iostream.h> void main( ) { int *p; //定义一个整型指针变量p p=new int; //动态分配一个整型存储区,并把首地址赋给p *p=10; cout<<*p<<endl; delete p; //释放p指的空间,撤消指针p } new 和 delete 的优点: (1)new可以自动计算所要分配内存的类型的大小,而不必用sizeof 来计算。 p 18