抱歉,这是一个初学者的问题,但是我在任何地方都找不到答案-我遇到了C++中的类析构函数,其中包含
--num_strings;
我想知道双破折号是什么意思。任何帮助表示赞赏,谢谢。以下是头文件和cpp文件的部分:
// strngbad.h
#include <iostream>
class StringBad
{
private:
char * str;
int len;
static int num_strings;
public:
StringBad(const char * s);
StringBad();
~StringBad();
};
// strngbad.cpp
#include <cstring>
#include "strngbad.h"
using std::cout;
....
....
....
StringBad::StringBad(const char *s)
{
len = std::strlen(s);
str = new char[len + 1];
std::strcpy(str, s);
num_strings++;
}
StringBad::~StringBad()
{
--num_strings;
delete [] str;
}
最佳答案
它是prefix decrement operator。它从变量中减去1,并将结果存储回变量中。作为表达式,它具有减量后的结果值。还有一个后缀减量运算符,其行为相同,只是表达式的值是减量之前的变量值。
(这是因为num_strings
是int
。当然,像C++中的大多数运算符一样,如果变量是一个类,则它可以为前缀--
运算符定义自己的语义,因此所有押注都是关于它的作用的。)