auto_ptr(T *p=0) *p=0什么意思啊?
*p=0什么意思,初始化p为NULL?
我在网上没查到,求指教。
[解决办法]
[解决办法]
默认参数--参数的缺省值
std::auto_ptr<int> one; //std::auto_ptr<int>::auto_ptr<int>(0);
int* p;
std::auto_ptr<int> two(p); //std::auto_ptr<int>::auto_ptr<int>(p);
[解决办法]
有区别,我在MSDN中查了auto_ptr class,auto_ptr()是默认构造函数,auto_ptr(T *p=0)应该是一个模板的构造函数,且此构造函数是有参数的,此处*p=0就是其默认参数,如果你直接写auto_ptr()来构造一个对象的话,相当于调用了auto_ptr(T *p=0),这里将一个指针参数赋值为0有一个好处,就是防止delete p 时产生非法访问,delete一个0指针是合法的。关于模板和构造函数详细内容可以看《Thinking in c++ Volume Two》,里面 讲得很好。