多次调用对象的构造函数

时间:2017-12-07 18:41:24

标签: c++ oop

此代码工作正常。我没有调用一个setter函数,而是使用了构造函数,而且我多次为一个对象调用构造函数。对于一个对象,Isn的构造函数只调用一次吗?像我一样做是对还是错?

    ifstream myfile;
    myfile.open("phones.txt");
    DirectoryEntry *TelephoneDirectory = new DirectoryEntry[size]; // default constructor
    for (int i = 0; i < size; i++)
    {
        TelephoneDirectory[i] = DirectoryEntry(myfile); // parameterized constructor
    }
    myfile.close();

1 个答案:

答案 0 :(得分:2)

  

我没有调用setter函数,而是使用了构造函数,而且我多次为一个对象调用构造函数。

不,你没有多次调用构造函数。您的代码非常类似于:

DirectoryEntry object;
object = DirectoryEntry( myfile );

您创建object,调用默认ctor然后创建临时并将其分配给objectobject没有多次调用ctor。所以你的代码是完全有效的(假设ctors和赋值运算符是有效的),但是如果你做了你真正想要的东西取决于你,因为你似乎不明白这里发生了什么。