采用指针来传递对象,虽然可以避免重复调用复制构造函数和析构函数,但是由于它得到了该对象的内存地址,可以随时修改对象的数据,因此它实际上是破坏了
按值传递的保护机制。
不过我们呢仍然有解决办法,那就是使用const指针来传递对戏那个,这样就可以防止任何试图对该对象所进行的操作行为,并且保证返回一个不被修改的对象。
//利用const指针来传递对象的例程如下:
#include <iostream>
using namespace std;
class A
{
public:
A();
A(A&);
~A();
int get()const {return x;}
void set(int i){x=i;}
private:
int x;
};
A::A()
{
cout<<"执行构造函数创建一个对象\n";
}
A::A(A&)
{
cout<<"执行复制构造函数创建该对象的副本\n";
}
A::~A()
{
cout<<"执行析构函数删除该对象\n";
}
const A *const func(const A *const one);
int main()
{
A a;
a.set(99);
func(&a);
return 0;
}
const A *const func(const A *const one)
{
//one.set();
cout<<one->get()<<endl;
//one++;
return one;
}
const A *const one
、、