析构函数忽略字符串赋值
destructor ignore string assignment
我用 C++ 为 class 创建了一个程序,其中一个要求是在程序的某些部分被调用时输出一个字符串。对于其中的大多数,我只是将一个字符串分配给一个成员变量,然后输出该变量。我想知道我是否可以在析构函数中分配字符串然后输出该字符串?当我尝试它时,它什么也不输出。
即:
Class
private:
string output;
~Class {
output = "destructor has fired!";
}
int main(){
cout << class.message;
}
这是伪代码所以请忽略语法 mistakes/missing 条。
当然可以在析构函数中输出一条消息,知道它已经触发,一种方法是这样做...
#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;
}
我用 C++ 为 class 创建了一个程序,其中一个要求是在程序的某些部分被调用时输出一个字符串。对于其中的大多数,我只是将一个字符串分配给一个成员变量,然后输出该变量。我想知道我是否可以在析构函数中分配字符串然后输出该字符串?当我尝试它时,它什么也不输出。
即:
Class
private:
string output;
~Class {
output = "destructor has fired!";
}
int main(){
cout << class.message;
}
这是伪代码所以请忽略语法 mistakes/missing 条。
当然可以在析构函数中输出一条消息,知道它已经触发,一种方法是这样做...
#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;
}