23.10作用域运算符: 当全局变量和局部变量同名时,函数中不能使用全局变量。 ∥例212 #include <iostream. h int avar=10 ∥1局变量 void maino { int avar=25;/局部变量 cout<< avar is <<avar<<endl 仑局部变量 可用作用域运算符::∥)*例213 #include <iostream.h> Int avar; void maino Int avar; avar=25;∥局部变量avar :avar=-10;∥局变量avar cout<<local avar=w<<avar<<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.11无名联合 C语言的共用体: union data a 4字 i int i; 节 char ch float f: ch union data a, b, c, 引用:aia.chaf等 C+的无名联合: unIon f 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
23.12强制类型转换 C语言的强制类型转换: int i=10: float x(float)i; C+的强制类型转换: int i=10: float float(i; float y=(floati 两种方法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
2313new和 delete C语言用函数 mallock和freO动态分配内存和释放动态分配的 内存。C++使用运算符new和 delete能更好、更简单地进行内存的分 配和释放。 如C语言中用: int“p; (int *)malloc( sizeof(int)); 2p=10 而C++语言中∥1*2.14 #include <iostream.h> void maino fint*p; ∥定义一个整型指针变量p p= new int;/动态分配一个整型存储区,并把首地址赋给p 10 cout<<*p<<endI: delete p;/釋放p指的空间,撤消指针p new和 delete的优点: (1)new可以自动计算所要分配内存的类型的大小,而不必用 sizeof 18 来计算
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
(2)new能够自动返回正确的指针类型,而不必进行类型转换 (3)可以用new将分配的对象初始化。 (4)new和 delete都可以被重载,允许建立自定义的分配系统。 说明: (1)使用new可以为数组动态分配内存空间。 int*pi=new int(10; int*pi=new int2 34; (2)new可在为简单变量分配内存空间的同时,进行初始化。 例215 #include <iostream.h> void main() fint*p p= new inte(9);动态分配内存并将99作为初始值赋给它 cout<<*p<<end delete p; (3)释放动态分配的数组存储区: delete [ p; 19
(2)new能够自动返回正确的指针类型,而不必进行类型转换。 (3)可以用new将分配的对象初始化。 (4)new 和 delete 都可以被重载,允许建立自定义的分配系统。 说明: (1)使用new可以为数组动态分配内存空间。 int *pi=new int[10]; int *pi=new int[2][3][4]; (2)new可在为简单变量分配内存空间的同时,进行初始化。 //**例2.15 #include <iostream.h> void main( ) { int *p; p=new int(99); //动态分配内存,并将99作为初始值赋给它 cout<<*p<<endl; delete p; } (3)释放动态分配的数组存储区: delete [ ]p; 19