抱歉,这是一个初学者的问题,但是我在任何地方都找不到答案-我遇到了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_stringsint。当然,像C++中的大多数运算符一样,如果变量是一个类,则它可以为前缀--运算符定义自己的语义,因此所有押注都是关于它的作用的。)

07-26 04:37