析构函数忽略字符串赋值

destructor ignore string assignment

本文关键字:赋值 字符串 析构函数      更新时间:2023-10-16

我用C++为一个类创建了一个程序,其中一个要求是在调用程序的某些部分时输出一个字符串。对于其中的大多数,我只是简单地将一个字符串分配给一个成员变量,然后输出该变量。我想知道我是否可以在析构函数中分配字符串,然后输出该字符串?当我尝试它时,它什么也不输出。

即:

Class
   private:
   string output;
~Class {
   output = "destructor has fired!";
}
int main(){
   cout << class.message;
}

这是伪代码,所以请忽略语法错误/缺失的部分。

当然可以在析构函数中输出一条消息,知道它已经启动,而实现这一点的一种方法是。。。

#include <iostream>
#include <string>
using namespace std;
class C{
    string output; // by default private
public:
    C(){}
    ~C() { cout << output << endl; }
    void setString(const string& s) {
        output = s;
    }
};  
int main()
{
    {
        C s;
        s.setString("Destructor has fired");
    }
    return 0;
}

如果我理解你的问题,这就是你应该做的。注意:没有成员变量,直接调用std::cout

#include <iostream>
#include <string>
using namespace std;
class C{
public:
    C() {
        cout << "C ctor" << endl; 
    }
    ~C() {
        cout << "C dtor" << endl; 
    }
};  
int main()
{
    {
        C s;
    }
    return 0;
}