在循环中创建和销毁一个对象

Create and destroy an object in a loop

我是 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?
}

非常感谢您的帮助。我对这种语言几乎一无所知。另外,我什至需要对象吗?我很困惑

对象一在结束括号处超出范围时将被自动删除。你已经在做了。要小心,就好像你创建了一个指针,当它超出范围时它不会被破坏。但是您当前的代码运行良好。

http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm

没有必要删除object1。

对于循环的每次迭代,将创建一个新对象 object1(使用默认构造函数)并在 "cout" 语句后销毁。

你不需要调用object1的析构函数,它会在循环体结束时调用。

从技术上讲,析构函数在声明对象的块的末尾(右大括号)调用。

这就是为什么右大括号 } 有时被戏称为 C++ 中最重要的语句。那个时候可能会发生很多事情。

然而,在构造函数或析构函数中进行实际计算通常被认为是不好的风格。您希望他们获得 "allocate" 和 "deallocate" 资源。阅读更多关于 RAII and the rule of five(或三个)的信息。

顺便说一句,如果发生 exceptionthrow 和匹配的 catch 之间的析构函数也会被触发。

请进一步了解 C++ containers. You probably want your applicants class to use some. Maybe it should contain a field of some std::vector type

学习C++11 (or C++14), not some older version of the standard. So use a recent compiler (e.g. GCC 4.9 at least, as g++, or Clang/LLVM 3.5 at least, as clang++) with the -std=c++11 option (don't forget to enable warnings with -Wall -Wextra, debugging info with -g for debugging with gdb, but enable optimizations e.g. with -O2 at least, when benchmarking). Modern C++11 (or C++14) has several very important features (missing in previous standards) that are tremendously useful when programming in C++. You probably should also use make (here I explain why), see e.g. this and others examples. See also valgrind.