首页 文章

多次调用对象的构造函数[关闭]

提问于
浏览
-2

这段代码工作正常 . 我没有调用一个setter函数,而是使用了构造函数,而且我多次为一个对象调用构造函数 . 是不是只为一个对象调用一次构造函数?这样做是对还是错?

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 回答

  • 2

    我使用构造函数而不是调用setter函数,而是多次调用对象的构造函数 .

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

    DirectoryEntry object;
    object = DirectoryEntry( myfile );
    

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

相关问题