指针、值和引用传递的区别
2017-06-05 11:40
225 查看
#include <iostream> using namespace std; class A { public: A() { cout << "A()" << endl; } A(const A &a) { cout << "A(const A&)" << endl; } private: int val; }; A funVal(A a) { cout << "funVal()" << endl; A *tmp=new A; return *tmp; /* A tmp ; return tmp; */ } A &funRef(A &a) { cout << "funRef()" << endl; A *tmp=new A; return *tmp; /* A tmp ; return tmp; */ } A *funPtr(A *a) { cout << "funPtr()" << endl; A *tmp=new A; return tmp; /* A tmp ; return &tmp; */ } int main(void) { A aa; cout << "-----------" << endl; //值传递时通过拷贝构造函数创建一个新的对象作为形参,返回值也会通过构造函数再次创建一个新的对象返回 funVal(aa); cout << "-----------" << endl; //引用传递时并没有创建新的对象,形参就是本身 funRef(aa); cout << "-----------" << endl; //指针传递时并没有创建新的对象,形参就是本身 funPtr(&aa); /* A a1 = funVal(aa); cout << "-----------" << endl; //引用作为返回值赋值给一个对象时,相当于拷贝构造函数,会调用拷贝构造函数 A a2 = funRef(aa); cout << "-----------" << endl; A *a3 = funPtr(&aa); */ return 0; }
相关文章推荐
- 传递指针的引用与传递指针的区别 反汇编
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别(进一步整理)
- C++中引用传递与指针传递区别
- 【补足基础】C++中引用传递与指针传递区别【转】
- c++中的值传递,引用传递,指针传递的区别?
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别
- C++点滴:向函数中传递指针和传递指针的引用的区别:
- c++中的值传递,引用传递,指针传递的区别?
- C++中引用传递与指针传递区别
- C++中引用传递与指针传递区别
- 【转载】C++中引用传递与指针传递区别(进一步整理)
- C++中引用传递与指针传递区别
- 问题:向函数中传递指针和传递指针的引用的区别
- C++中引用传递与指针传递区别(进一步整理)
- 转:C++中引用传递与指针传递区别
- 值传递-引用传递-指针传递-函数调用时指针参数的传递 指针和引用的区别