![]() |
1
7
对您的代码进行了第一次修复:
有待解决的问题: 复制构造函数和赋值运算符。现在,如果我试着这么做,它会崩溃得可怕:
常数正确性:
对象生存期:
以及,呃,适当的测试:
|
![]() |
2
4
举几个例子和约翰所说的:
1.)使用初始化列表
|
![]() |
3
3
你有很多内存泄漏,特别是如果你复制,分配或推到你的堆栈对象。甚至作为一个学习练习,我建议你不要做自己的内存管理(这是你需要在C++中学习的东西,但是一步一步地学习)。相反,使用std::vector或std::list,而不是原始的C样式的值数组。这意味着析构函数、复制构造函数、赋值运算符和Push()方法不会泄漏内存——它们在默认情况下也会做正确的事情(我称之为 最小惊奇原则 ). 我认为C++学习的一个重要部分就是知道如何使用STL。先了解这一点,然后再考虑指针和new[]以及delete[]。 我建议您阅读一下复制构造函数、赋值运算符和析构函数,这样您就知道值实际上是如何被复制和删除的。尝试编写一个类:
然后在上面做一些操作
看看你对它应该做什么的期望是否与你在控制台窗口中看到的相符。 |
![]() |
4
1
你应该删除
|
![]() |
5
0
|
![]() |
6
0
等 你为什么这么做
我猜你是说
他们做完全相同的事情,但第一个更自然 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |