在我的C++上读了一下,发现这篇关于RTTI(运行时类型识别)的文章:http://msdn.microsoft.com/en-us/library/70ky2y6k(VS.80)
.aspx.嗯,这是另一个主题:) - 但是,我在type_info
-class中偶然发现了一个奇怪的说法,即关于::name
-method.它说:" type_info::name
成员函数返回一个const char*
以空字符结尾的字符串,表示该类型的人类可读名称.指向的内存是缓存的,不应该直接取消分配."
你怎么能自己实现这样的东西!?我以前经常在这个问题上苦苦挣扎,因为我不想char
为调用者删除一个新的-array,所以我坚持std::string
到目前为止.
因此,为了简单起见,假设我想创建一个返回的方法"Hello World!"
,让我们调用它
const char *getHelloString() const;
就个人而言,我会以某种方式使它(Pseudo):
const char *getHelloString() const { char *returnVal = new char[13]; strcpy("HelloWorld!", returnVal); return returnVal }
..但这意味着调用者应该delete[]
在我的返回指针上做一个:(
Thx提前
这个怎么样:
const char *getHelloString() const { return "HelloWorld!"; }
直接返回文字意味着字符串的空间由编译器在静态存储中分配,并且在程序的整个持续时间内可用.