众大神:帮忙回答友元类私有成员变量m_data怎么开辟内存空间的
众大神:帮忙回答友元类私有成员变量m_data如何开辟内存空间的?
template<typename Type>class SingleList
{public: SingleList():head(new ListNode<Type>()) { }
ListNode<Type> *head;这个类仅显示构造函数跟变量。
他的友元类为:
template<typename Type>class SingleList;
template<typename Type>class ListNode
{private: friend typename SingleList<Type>;
public: ListNode():m_pnext(NULL) { }
private: Type m_data;
ListNode *m_pnext;这个类仅显示构造函数跟变量。
这主程序中我声明一个对象SingleList<int> list;
现在问题是:在成功创建SingleList对象时,ListNode类中的m_data变量如何获得内存空间,此程序,我已调试多次,当创建变量时,只在以上两个类的构造函数中运行,但是并没有代码给m_data分配内存,所以有点糊涂到底是如何获得内存的,请各位大神帮忙回答,谢谢。
------解决方案--------------------
当然分配内存,因为内存在调用构造函数之前已经分配好了,只是它们的值是随机的,需要在构造函数里进行初始化,赋一个确定的值。
如果构造函数什么也不做,内存还是有的,但是后果不确定,所以最好在构造函数里将每个值初始化。这与分配内存没有关系。
template<typename Type>class SingleList
{public: SingleList():head(new ListNode<Type>()) { }
ListNode<Type> *head;这个类仅显示构造函数跟变量。
他的友元类为:
template<typename Type>class SingleList;
template<typename Type>class ListNode
{private: friend typename SingleList<Type>;
public: ListNode():m_pnext(NULL) { }
private: Type m_data;
ListNode *m_pnext;这个类仅显示构造函数跟变量。
这主程序中我声明一个对象SingleList<int> list;
现在问题是:在成功创建SingleList对象时,ListNode类中的m_data变量如何获得内存空间,此程序,我已调试多次,当创建变量时,只在以上两个类的构造函数中运行,但是并没有代码给m_data分配内存,所以有点糊涂到底是如何获得内存的,请各位大神帮忙回答,谢谢。
类的私有成员变量
友元类
分配内存
------解决方案--------------------
当然分配内存,因为内存在调用构造函数之前已经分配好了,只是它们的值是随机的,需要在构造函数里进行初始化,赋一个确定的值。
如果构造函数什么也不做,内存还是有的,但是后果不确定,所以最好在构造函数里将每个值初始化。这与分配内存没有关系。