mon*_*jbl 2 c++ memory memory-management class immutability
所以,作为我正在研究的个人项目的一部分,我正在深入学习C++,而不是在学校.我是一名Java开发人员,因此内存管理有点难以再次习惯,而现在我正在以某种方式编写代码,我有一个关于不可变类的快速问题.
当我将它们视为一个概念时,我当然将它们与Java中的Strings进行比较.但是现在我在C++中,重新分配操作可能会造成内存泄漏(至少,我认为它可以).所以现在如果我这样做:
MyImmutableClass a ("blah");
a = a.modifyInSomeWay();
Run Code Online (Sandbox Code Playgroud)
其中modifyInSomeWay返回MyImmutableClass的新实例,我没有调用解构函数.在这里我是否有一些东西可以防止第一次分配"a"在内存中留下来?
在这种情况下你所描述的赋值运算符的MyImmutableClass调用来分配的右边复制到左边(覆盖无论是在左侧).如果你的类确实是不可变的,它甚至不会有一个可访问的赋值运算符,你将得到一个编译错误.
如果你的对象是可变的,你做的有(正确)赋值运算符,那么就没有内存泄漏,因为在左手侧的数据析构函数将运行在必要时释放内存.但是,编写正确的赋值运算符对某些类来说可能很棘手.
这种直接分配给(用户定义的)对象的概念在Java中不存在,因为在那里一切都是引用.
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |