C++中的引用
来源:互联网 发布:监控摄像头控制软件 编辑:程序博客网 时间:2024/06/05 18:12
我们知道,在c++中参数传递,除数组以外,都是默认进行的值传递,比如:
Person oldP;
Person newP=oldP;
在JAVA中,引用传递,如果我们修改了newP,则oldP也同时发生变化;而在c++中却不是,c++中。上述表达式隐式的调用了Person类的默认拷贝构造函数,进行了值拷贝,从而产生了一个克隆的Person对象;
此时JAVA中执行:
newP==oldP //true;
在c++中执行:
newP==oldP //false;
在c++中,只要是将同类型的一个对象传递给另一个对象,均是如此;比如:
Person test(Person p){
.........
}
int main(){
Person p;
test(p);
}
同样的产生了一份拷贝;
Person oldP=test(P);
也是如此;
我们可以在Person类定义中重写;
Person::Person(const Person &p){
cout << "copy construtor";
........
}
此时我们能够看见消息的打印;
如何保证c++中的引用传递呢;
1)指针,传递指针
Person test(Person *p);
但是这样会给程序带来一定的负责性;
2)引用传递
Person test(Person &p);
传递的实参不会调用拷贝构造函数,而是直接传递了对象本身;
同时,也可以返回引用类型;
Person& test(Person &p){
.......
return p;
}
Person &pNew=test(p);
这个时候的复制依然不会调用拷贝构造函数;而:
Person pNew=test(p);
则会调用拷贝构造函数;
Person test(Person &p){
.......
return p;
}
而Person &pNew=test(p);则会报错,因为return p到 =test(P);过程中间,程序调用了默认拷贝函数,生成了一个test函数局部域的临时Person对象,她在test结果的时候销毁了,而引用类型的变量时必须得初始化为一个已经定义并且有效的对象的;
所以调用失败了;
- c语言中的引用
- 【C++】:C++中的引用
- 深入探讨C 中的引用
- 深入探讨C 中的引用
- C++/CLI中的引用类型
- 深入探讨C 中的引用
- C++中的引用
- [C++]C++中的引用(转)
- 【引用】C中的类型转换
- C语言中的引用调用
- 深入探讨c++中的引用
- C/C++中的指针、引用和JAVA中的引用
- C/C++中的引用和指针
- c语言形参中的引用变量
- C/C++中的引用和指针
- C/C++中的引用和指针
- c语言实现cpp中的引用传递
- C和C++中的引用和指针
- ~
- Oracle异常问题解决方案
- 程序的四种入口方式
- 孙鑫VC++讲座笔记 LESSON 9
- 在Oracle中设置自动增长列
- C++中的引用
- B-样条曲线:开曲线
- "EZBOOT kernel not found" DOS返回EZBOOT错误
- C++中的文件操作
- 收藏
- PLSQL访问远程数据库的配置方法
- 一起回忆广州快腾气化炉恋爱的甜蜜时光
- linux下apr安装方法
- 语言和软件的本质是数据结构与算法