C++中关于string的析构函数
天蓬老师
天蓬老师 2017-04-17 14:26:08
0
3
591

今天偶然用到string, 发现string的析构函数特别奇怪, 直接调用居然报错, 代码如下 :

int main(int argc, char* argv[]) {
    std::string x = "123";
    x.~string();
    return 0;
}

这是报错信息 :

/Users/zhangzhimin/ClionProjects/geek/main.cpp:16:8: error: identifier 'string' in object destruction expression does not name a type
    x.~string();

求解答.

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(3)
刘奇

樓上搞笑的?

正解是std::string這個東東其實只是std::basic_string<char>的typedef,所以如果你要調它的析構函數才對:

x.~basic_string()

另外你這string又不是new出來的,沒必要調析構

巴扎黑

題主你成功地吸引了我的注意。 。 。

如果之前沒用using語句打開命名空間的話,呼叫析構函數要這麼寫:
x.std::string::~string();

我猜你這麼寫,是為了在空間配置器中手動析構物件

Ty80

啊,string的確是basic_string的typedef出來的,不過string直接呼叫~string()是可以的。題主應該是缺少std名字空間的問題吧。實踐是檢驗真理的標準,,我試了一下編譯運行成功。這裡有string的說明題主http://www.cplusplus.com/refe...

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string str("hello");
    str.~string();
    return 0;
}
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板