请教一下函数返回指针的有关问题
请问一下函数返回指针的问题?比如:C/C++ codeclass A{private:char *bufferConst char * GetData(){retur
请问一下函数返回指针的问题?
比如:
C/C++ codeclass A{private:char *buffer;Const char * GetData(){return buffer;}char * GetValue(){char *buf=new char[10];return buf;}};
A a;
a.GetData();//这里我不希望被执行delete操作
a.GetValue();//这里我希望被执行delete操作
请问有没有好的办法控制函数返回的指针delete操作或者被误操作?
[解决办法]返回一个 share_ptr<char>.
或者一个包装过的指针
[解决办法]如果你a.GetValue();这个delete了之后,那返回的数据还有用吗?
[解决办法]既然已经返回,别人要做什么就不再需要经过你同意。所以,别想了。
如果你担心别人误操作破坏你的对象,那可以在GetData里给人返回一个副本。像你写的const函数的写法是不可以的。
[解决办法]将buffer中的字符串复制一份,返回指向副本的指针。这样不管别人怎么瞎胡闹,反正是不会影响到你的对象了。
[解决办法]程序是人写的,不要陷入在自己拯救自己的死循环中无法自拔。
[解决办法]指针的控制力很低。C++中尽可能不要把裸指针暴露给类的客户。多数高级语言则不直接提供指针。你想实现的这种指针一般都是要用其他类作代理包装来实现权限控制的。反正不会是裸指针
[解决办法]GetValue()调用结束 内存被释放! a.GetValue()返回“迷途指针”!