按值传递和引用传递的区别
来源:互联网 发布:淘宝差评小二介入 编辑:程序博客网 时间:2024/05/16 13:06
按值传递:在方法中使用这个变量将会复制一个临时变量,返回时会销毁这个临时变量
引用传递:不需要创建临时变量和销毁临时变量,节约时间和空间,如果可以选择,优先选择引用传递
#include"stdio.h"#include <iostream>using namespace std;class CopyTest{private :char *name;int len;static int num_name;public:CopyTest();CopyTest(char *str);~CopyTest();friend std::ostream & operator<<(std::ostream &os,const CopyTest &st);//getName();CopyTest(CopyTest & copyA);};CopyTest::CopyTest(){cout<<"使用copyTest()创建"<<"\n";num_name++;len=4 ;name=new char[len];strcpy(name,"c++");}int CopyTest::num_name=0;CopyTest::CopyTest(CopyTest & copyA){cout<<"使用copyTest(CopyTest & copyA)创建"<<copyA.name<<"\n";num_name++;len=copyA.len ;name=new char[len+1];strcpy(name,copyA.name);}CopyTest::CopyTest(char *str){cout<<"使用copyTest(char *str)创建"<<str<<"\n";num_name++;len=strlen(str);name=new char[len+1];strcpy(name,str);}CopyTest::~CopyTest(){cout<<"销毁"<<name<<"\n";num_name--;}void getName(CopyTest sb){cout<<"name:"<<sb<<"\n";}std::ostream & operator<<(std::ostream & os,const CopyTest &st){os<<st.name ;return os;}int main(){ CopyTest test("test"); getName1(test);//在getName中使用CopyTest时先调用复制构造函数创建一个临时的CopyTest,返回时调用析构方法销毁这个临时的CopyTest cout<<test;getchar();return 0;}
0 0
- 引用传递和值传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 值传递和引用传递的区别
- 引用传递和值传递的区别
- 按值传递和按引用传递的区别
- 按值传递和引用传递的区别
- 值传递、指针传递和引用传递的区别
- "栈"和"堆"的区别; 引用传递和值传递
- 值传递和引用传递的区别和理解demo
- Java的值传递和引用值传递的区别
- 对于Java的值传递和引用传递的区别
- 值传递和引用传递区别
- Java中按值传递和按引用传递的区别
- Java之美[从菜鸟到高手演变]之设计模式四
- Hibernate入门(以查询为例)
- Javascript---有趣的一段代码---局部变量
- iPhone开发之深入浅出 (4) — ARC之循环参照
- QR码编码原理三(日本汉字和中文编码)
- 按值传递和引用传递的区别
- 电脑BIOS 设置
- Spring常用注解
- jQuery自定义插件
- Grunt的配置及使用(压缩合并js/css)
- easyui方法扩展
- OJ平台中的典型输入处理
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建(一)
- iPhone开发之深入浅出 (5) — ARC之Outlet与弱引用