使用输出重载时发现的一个奇怪现象!!!

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

近日,使用重载输出时发现了一个奇怪现象,以下是我针对这个问题的简化程序:

//Node.h//定义了一个节点类

#include<iostream>

using namespace std;

template<class elemType>

class Node{

public :

elemType data;

Node *pl;//指向左节点

Node *pr;//指向右节点

public:

Node()

{

pl=NULL;

pr=NULL;

}

~Node()

{

countNode--;

}

friend ostream &operator<<(ostream& out,const Node<elemType>* node)

{

out<<node->data;

return out;

}

};

//imfor.h 一个测试类

template<class elemType>

struct Imfor{

Node<elemType> *p;

Imfor(Node<elemType>* node)

{

p=node;

}

Imfor()

{

}

friend ostream &operator<<(ostream &out,const Imfor<elemType> *imfor){

out<<imfor->p

return out;

}

};

//test.cpp 测试主函数

void main()

{Imfor<int> imfo;

Node<int> node;

node.data=2;

imfo.p=&node;

cout<<&imfo;

}

这样便可以输出imfo->p->data及输出结果为2

但是将test.cpp改成下面的:

void main()

{Imfor<int> *imfo=new Imfor<int>;

Node<int> node;

node.data=2;

imfo->p=&node;

cout<<imfo;

}

就会输出imfo(地址),也就是没有调用自己写的构造函数!

这是怎么解释呢?请高手指点

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航