【发布时间】:2014-07-03 19:14:38
【问题描述】:
一位同事编写了以下代码,我确信这是错误的。
我想向他解释问题,但不知道正确的术语,所以我找不到支持我的立场的参考资料:
他的代码:
BSTR someString = _bstr_t(L"Hello World");
为什么我认为这是错误的:
我相信_bstr_t(L"Hello World"); 调用_bstr_t 的构造函数,并创建该类型的短期临时变量。在这行代码之后(在分号序列点之后),该临时文件将被自动删除,并释放其字符串空间。
这将使someString 指向已释放的内存。
问题:
构造函数调用的正确术语是什么?
你能指出一些详细描述使用的参考/术语/页面吗?
临时 _bstr_t 对象是否有术语?
我想我会称之为“匿名的临时变量”,但我不知道这在技术上是否准确。
(或者我的分析完全错了......如果是这样,我很想知道)
澄清:
_bstr_t is a C++ class,微软常用来包装他们的BSTR类型,所以它有构造函数/析构函数/操作符等。
BSTR 只是 WCHAR* 的 typedef,因此它没有任何逻辑。它只是一个愚蠢的指针。
【问题讨论】:
标签: c++ constructor com bstr