我是C ++ / stacko的新手,并且主要想要:
看起来很简单,但在环顾四周之后,我看到了关于析构函数的事情,但我不知道这是不是我要找的。 p>
for(int i=0; i<1000; i++){
applicants object1;
object1.readin();
cout<<object1.calculate();
//How do I delete object1 and start again?
}
非常感谢您的帮助。我对这种语言几乎一无所知。另外,我甚至需要物品吗?我很困惑
答案 0 :(得分:3)
没有必要删除object1。
对于循环的每次迭代,将创建一个新的对象object1(使用默认构造函数)并在“cout”语句之后进行破坏。
答案 1 :(得分:3)
您不需要调用object1
的析构函数,它将在循环体的末尾调用。
从技术上讲,在块的末尾(右大括号)调用析构函数来声明对象。
这就是为什么右括号}
有时被戏称为C ++中最重要的陈述。当时可能会发生很多事情。
顺便说一句,如果exception发生,throw
和匹配的catch
之间的析构函数也会被触发。
请详细了解C ++ containers。您可能希望您的applicants
课程使用某些课程。也许它应该包含一些std::vector
type的字段。
同样学习C++11 (或C ++ 14),而不是标准的旧版本。因此,使用最近的编译器(例如GCC 4.9至少g++
或Clang/LLVM 3.5至少clang++
} -std=c++11
选项{don}不要忘记使用-Wall -Wextra
启用警告,使用-g
调试信息以便使用gdb
进行调试,但是在进行基准测试时至少启用optimizations,例如-O2
。 Modern C ++ 11 (或C++14)有几个非常重要的功能(以前的标准中缺少)非常有用 programming in C++。你可能也应该使用make
(here我解释原因),参见例如this和其他例子。另请参阅valgrind。
答案 2 :(得分:2)
当对象1超出末尾括号范围时,将自动删除对象。你已经在做了。要小心,就好像你创建一个指针,当它超出范围时不会被破坏。但是你当前的代码工作正常。
http://www.tutorialspoint.com/cplusplus/cpp_variable_scope.htm