PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
Re: [问题] 使用指标的时机
楼主:
PythonScript
(Python)
2019-09-13 06:14:41
拍谢 问问题果然还是要有技巧 0rz
贴 sample code 可能比较好
https://pastebin.com/HhrqvaAz
我原本要问的问题就是 sample code 中的
instanceA, instanceB, instanceAPointer, instanceBPointer
会不会有机会消失
(**问题1)
主要操作的对象是 instanceB, 会担心 instanceB 身上挂的 instanceA 会消失
因为一直看到 C++ 的内存有可能会被取代, 所以要用指标 (还是这是我的误解?)
后来发现编译不会过, 有点惊呆了
错误是写发生在 Line 33
Error C4700 uninitialized local variable 'instanceB' used
(**问题2)
所以 classB instanceB; 还是得初始化才行吗
这就是板友说的有可能会无效?
(**问题3)
这样看起来 C++ 也跟 C# 一样, 必须要初始化才能用
看过一些 C++ code, 都是没 new 就直接用了
请问为什么我会有这种错觉 @@
还是因为使用情况不同, 所以可以不用初始化就拿来用
再看回 sample, 下面这个比较早先出, 为什么编译器没有显示这个错误
Line 17
classA createInstanceA()
{
classA instanceA;
return instanceA;
};
(**问题4)
是因为 Line33 那一块有执行
instanceB.PropertOfInstanceA = passedInstanceA;
的关系吗
(**问题5)
那这样的话, sample code 里面的 instanceB
通通都得用 instanceBPointer 才能操作囉
拍谢 问一问都觉得自己是白痴, 我也很想有时间学跟有同事能问 0rz
楼主:
PythonScript
(Python)
2019-09-13 08:51:00
知道一定要 new 之后 我好像就懂一半了@@
作者:
sarafciel
(Cattuz)
2019-09-13 09:07:00
没有什么一定要new这种事 你这样写反而问题大很多因为C++没有GC 你频繁的new就代表你要做频繁的delete你真正的问题是没有弄清楚生命周期这件事
楼主:
PythonScript
(Python)
2019-09-13 09:43:00
好的 会去弄懂
作者:
sarafciel
(Cattuz)
2019-09-13 10:45:00
我会建议你把一些建构解构子跟赋值运算子实作起来然后在里面把物件的位址给印出来比方说像这样
https://ideone.com/1Zl6FK
你就可以看到像那个B因为new了没有delete所以destructor没有执行到 这个问题你原文的code也有
继续阅读
Re: [问题] 使用指标的时机
EricTCartman
[问题] 使用指标的时机
PythonScript
Re: [问题] txt档案读取一行,放入到阵列并显示
poyenc
[问题] txt档案读取一行,放入到阵列并显示
jayzhuang
[问题] 请教一个处理array的问题
WillBeFine
Re: [问题] 关于不同资料却得到相同地址的问题
poyenc
[问题] 关于不同资料却得到相同地址的问题
ac01965159
[问题] 用javascript呼叫lua函式
fsvy
Re: [问题] dll 之间传递 vector<class>
EricTCartman
[问题] dll 之间传递 vector<class>
PythonScript
Links
booklink
Contact Us: admin [ a t ] ucptt.com