【发布时间】:2010-03-27 20:39:31
【问题描述】:
我想运行一个程序的 1,000 次迭代,所以在 main 中设置一个 1000 的计数器。我需要在每次迭代后重新初始化各种变量,并且由于类构造函数已经写出了所有初始化 - 我决定在每次迭代后调用它,每次迭代的结果都存储在 main 中的一个变量中。
但是,当我调用构造函数时,它没有任何效果......我花了一段时间才弄清楚 - 但它没有重新初始化任何东西!
我创建了一个与构造函数一模一样的函数——所以对象会有自己的版本。当我调用它时,它会按照我的预期重新初始化所有内容。
int main()
{
Class MyClass()
int counter = 0;
while ( counter < 1000 )
{ stuff happens }
Class(); // This is how I tried to call the constructor initially.
// After doing some reading here, I tried:
// Class::Class();
// - but that didn't work either
/* Later I used...
MyClass.function_like_my_constructor; // this worked perfectly
*/
}
...有人能解释一下为什么我做错了,或者没有用,或者很傻,或者你有什么?我的意思是——在心理上,我只是想——废话,我可以调用这个构造函数并重新初始化所有这些东西。构造函数(理想情况下)是否仅在创建对象时调用?
【问题讨论】:
-
似乎可以使用 placement new。 stackoverflow.com/questions/6868363/…
-
MyClass = Class();?
标签: c++ constructor