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

今天偶然用到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)
刘奇

2階で何が面白いの?

正しい答えは、std::string は実際には std::basic_string<char> の単なる typedef であるため、そのデストラクターを調整したい場合は次のようにします:

リーリー

さらに、文字列は新しいものではないため、分解する必要はありません

いいねを押す +0
巴扎黑

あなたは私の注意を引くことに成功しました。 。 。

以前に using ステートメントで名前空間を開いていない場合、デストラクターの呼び出しは次のように記述する必要があります:
x.std::string::~string();

空間コンフィギュレーター

内のオブジェクトを手動で破棄するためにこれを書いたと思います。
いいねを押す +0
Ty80

ああ、string は確かに Basic_string<> の typedef から派生していますが、string は ~string() を直接呼び出すことができます。このトピックは、std 名前空間の欠如が原因である可能性があります。実践は真実をテストするための標準です。私はコンパイルして正常に実行してみました。タイトル http://www.cplusplus.com/refe...

の説明です。 リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート