此代码工作正常。我没有调用一个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();
答案 0 :(得分:2)
我没有调用setter函数,而是使用了构造函数,而且我多次为一个对象调用构造函数。
不,你没有多次调用构造函数。您的代码非常类似于:
DirectoryEntry object;
object = DirectoryEntry( myfile );
您创建object
,调用默认ctor然后创建临时并将其分配给object
。 object
没有多次调用ctor。所以你的代码是完全有效的(假设ctors和赋值运算符是有效的),但是如果你做了你真正想要的东西取决于你,因为你似乎不明白这里发生了什么。