c语言面向对象,C++对C语言的非面向对象特性扩充(3)

今天要讲的是C++作用域运算符"::",强制类型转换的扩充,C++中相对于C中malloc和free函数的运算符new和delete,以及C++对C的一个重要扩充:引用(reference);这也是C++对C语言的非面向对象特性扩充系列的最后一节。
1.如果有两个同名变量,一个是全局的,一个是局部的,那么局部的变量在其作用域拥有较高的优先权,全局变量则被屏蔽。那如果我希望在局部变量的作用域里使用全局变量怎么办,这时就要用到::作用域运算符了。比如:
1 #include 2 3 using namespace std; 4 5 int x; 6 7 int main() 8 9 { 10 11 int x; 12 13 x=50; 14 15 ::x=100; 16 17 cout<<"局部变量x="< 4.接下来详细地说一下C++的引用(reference),先解释一下,什么是引用?打个比方,一个人可能有三四个名字,但这三四个名字所做的事,其实就是那一个人所做的。引用就是给变量起了个别名罢了。它的格式:类型 &引用名=以定义的变量名;比如:
1 #include 2 3 using namespace std; 4 int main() 5 { 6 int x=100; 7 int &y=x; 8 x=50; 9 cout<<"x="< 结果:
C++对C语言的非面向对象特性扩充(3)c语言面向对象
发现其实引用就那么回事,但是也有几个注意点:(1)在声明引用时,必须立即对它进行初始化,不能声明完后在赋值:如int x=10;int &y;y=x;(2)引用的类型必须和给其赋值的变量的类型相同,不可以这样:int x;double &y=x;(3)为引用提供的值,可以是变量也可以是引用:int x=5;int &y=x;int &z=y;(4)引用在初始化后不能再被重新声明为另一个变量的引用:int x,y;int &z=x;z=&y;
其实引用主要的用途就在于作为函数的参数,回顾一下,以前在C中传递函数参数有两种情况,分别是"传值调用"和"传址调用",前者传递是单向的,后者则为双向,而引用作为函数参数传递,则是"传址调用",它和C中指针作为参数传递的效果是一致的,只不过它不用像指针一样,需要交间接引用运算符"*";举个例子,比较一下这两种方法:
1 #include 2 3 using namespace std; 4 void swap(int *x,int *y) 5 { 6 int temp; 7 temp=*x; 8 *x=*y; 9 *y=temp; 10 } 11 12 void swap(int &x,int &y) 13 { 14 int temp; 15 temp=x; 16 x=y; 17 y=temp; 18 } 19 int main() 20 { 21 int i=10,j=5; 22 cout<<"i="< 最后,我们还是用一个例子来总结一下今天所讲的内容(开发工具:vs2010):
1 #include "stdafx.h" 2 #include 3 4 using namespace std; 5 6 int x=10;//全局变量 7 void swap(int *x,int *y)//指针类型的参数 8 { 9 int temp; 10 temp=*x; 11 *x=*y; 12 *y=temp; 13 } 14 15 void swap(int &x,int &y)//带有引用类型的参数 16 { 17 int temp; 18 temp=x; 19 x=y; 20 y=temp; 21 } 22 int main() 23 { 24 double *y=new double(5.55);//new动态分配内存空间,字节大小和double类型所占字节一样,并初始化值 25 int x=double(*y);//强制类型转换 26 27 cout<<"局部变量x="<
Tags:  c语言 c语言面向 c语言是面向什么 c语言对象 c语言面向对象

延伸阅读

最新评论

发表评论