我想出来这样一个测试代码。CList<CString, CString&> List;//这里定义一个全局的链表,当然,我们可以使用CStringList,在这里我只是为了测试一个问题。//下面是我的功能函数
void Func()
{
  CString  strTmp = " I am a Chinese";
  List.AddTail(strTmp);
}//下面是开始主程序
bool  main()
{
  Func();  //后面其它的代码。}
上面的代码,关键是我想测试引用参数的问题。
很显然,strTmp变量是一个栈内变量,当Func()函数调用结束时,这个临时变量会自动消失。
但是,在其消失以前,我把这个临时变量传递给了List链表的函数的参数,而这个参数采用的是引用的方式(看List被定义时的第二个参数)。也就是说,这个参数和strTmp指向的是内一块内存地址。那么,当strTmp消失以后,这个参数也应该消失(即值将不确定,而不会是先前的"i am a chinese"),但是,我发现当Func()返回后,List内部还是保存着"i am a chinese"。AddTail函数,不是直接把strTmp的引用放到链表的最后吗?可当strTmp消失以后,这个链表的相应的值也应该消失啊(因为是引用),可为什么事实不是这样呢??
谢谢:)