创建并销毁循环中的对象
Create and destroy an object in a loop
我是C++/stacko的新手,主要想:
- 创建对象
- 为此读取大量数据
- 计算出该对象的分数后,将其打印出来
- 从内存中删除对象,因为每个对象都有很多变量
- 循环1000次
这看起来很简单,但环顾四周后,我看到了关于析构函数的东西,但我不知道这是否是我想要的。
for(int i=0; i<1000; i++){
applicants object1;
object1.readin();
cout<<object1.calculate();
//How do I delete object1 and start again?
}
非常感谢你的帮助。我对这种语言几乎一无所知。还有,我甚至需要物品吗?我很困惑
没有必要删除object1。
对于循环的每一次迭代,都会创建一个新的对象object1(使用默认构造函数),并在"cout"语句之后进行解构。
您不需要调用object1
的析构函数,它会在循环体的末尾被调用。
从技术上讲,析构函数是在声明对象的块的末尾(右大括号)调用的。
这就是为什么右大括号}
有时被戏称为C++中最重要的语句。那时可能会发生很多事情。
然而,在构造函数或析构函数中进行实际计算通常被认为是糟糕的风格。您希望他们"分配"answers"解除分配"资源。阅读更多关于RAII和五条规则(或三条规则)的信息。
顺便说一句,如果发生异常,throw
和匹配的catch
之间的析构函数也会被触发。
请详细了解C++容器。您可能希望applicants
类使用一些。也许它应该包含某种std::vector
类型的字段。
同时学习C++11(或C++14),而不是一些旧版本的标准。因此,使用带有-std=c++11
选项的最新编译器(例如,至少GCC 4.9,作为g++
,或Clang/LLVM 3.5,至少作为clang++
)(不要忘记使用-Wall -Wextra
启用警告,使用-g
启用调试信息以使用gdb
进行调试,但在基准测试时,至少使用-O2
启用优化)现代C++11(或C++14)有几个非常重要的特性,在用C++编程时非常有用。您可能还应该使用make
(在这里我解释了原因),例如参见本示例和其他示例。另请参阅valgrind。
当一个对象超出括号末尾的范围时,它将被自动删除。你已经在做了。要小心,如果你创建了一个指针,当它超出范围时,它不会被破坏。但您当前的代码运行良好。
http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm
- 使用循环创建类对象
- 如何在C++中循环访问未知对象方法?
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 有没有办法在C++中循环访问对象的不同数据成员
- Pybind11:使用 for 循环使用 OpenMP 访问 python 对象
- 如何在 c++ 中使用 for 循环输出矢量中的所有对象
- 涉及全局对象的循环依赖C++
- c++ 循环访问对象列表并删除对象
- 循环访问对象列表 c++
- 在C++中使用循环创建多个对象
- 我想在 C++ 中使用 for 循环创建类对象
- 循环中本地对象的析构函数是否保证在下一次迭代之前被调用?
- 在 While 循环中重用对象的多线程
- C++ 在地图上循环 - 消失的对象
- 基于范围的 for 循环将对象移动到另一个容器中?
- 在游戏循环中创建类对象
- 访问类的 std::vector 与 for 循环中的 custum 类对象
- 如何通过C 中的类对象循环
- C++:外部对象循环引用
- 用对象循环向量