创建并销毁循环中的对象

Create and destroy an object in a loop

本文关键字:对象 循环 创建      更新时间:2023-10-16

我是C++/stacko的新手,主要想:

  1. 创建对象
  2. 为此读取大量数据
  3. 计算出该对象的分数后,将其打印出来
  4. 从内存中删除对象,因为每个对象都有很多变量
  5. 循环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