在阅读《C++ primer》的时候,注意到,构造函数是可以手动调用的。以前没有怎么留意这个问题。这里做个记录。
首先,手动调用构造函数系统实际上是创建了一个临时对象的,如果不保存这个临时对象,那么之后是无法使用这个对象的。
采用手动调用构造函数是一种初始化对象的方式,《C++ primer》中使用的情景是,当cin的数据不合法时就调用构造函数初始化一个默认的对象出来。
构造函数的手动调用的前提当然是这个构造函数是public控制的,因为构造函数是受访问控制符控制的。
下面是一个示例代码:
#include <iostream.h>
//using namespace std;
class Test{
public:
Test(){value = 0;}
Test(int v){value = v;}
Test(const Test&){}
// Test operator= (const Test&){ }
~Test(){}
friend ostream& operator<< (ostream &, const Test &);
friend istream& operator>> (istream &, Test &);
//private:
int value;
};
ostream& operator<< (ostream &out, const Test &test){
out << "value = " << test.value << endl;
return out;
}
istream& operator>> (istream &in, Test &test){
cout << "input value:";
in >> test.value;
return in;
}
void main()
{
Test test = Test();
cin >> test;
test = Test(112);
cout << test << endl;
}