问题描述
声明函数时候,形参为什么有时候用指针对象,有时候使用普通类对象?为什么不能像java都使用普通类对象?难道类对象作用不能实现到指针对象功能?比如代码如下: class A{}class B( public: B(A* aaa);//这里为什么不用A aaa去掉指针 //普通类传参有什么区别 B(A aaa);}
解决方案
引用class B( public: B(A* aaa);//这里为什么不用A aaa去掉指针 //普通类传参有什么区别 B(A aaa); } 1、传指针(和引用)是非常快的,f(A aaa);这种形式 在传参数的时候,会首先调用类A的赋值构造函数。而f(A* aaa);则只需要传递一个4字节的地址即可。2、f(A* aaa); 在它的函数体内改变aaa指向的对象,则源对象被改变。f(A aaa);在函数体内改变aaa对象,源对象不被改变,亦即实参不被改变,被改变的只是副本。3、c++的多态特性只能建立在指针和引用的基础之上,不能想Java那样直接建立在对象基础之上。例如:前提:AA 是 A的派生类,f为A中的虚函数A a= AA(aa);a.f();//它执行的是A类中的fA *a= new AA();a->f();//它执行的是AA类中的f
时间: 2024-08-29 07:10:08