静态类在C++的目的是什么

What is the purpose of static class in C++?

本文关键字:是什么 C++ 静态类      更新时间:2023-10-16

我最近在浏览 ns2 模拟器的源代码时遇到了 C++ 中静态类的定义:

static class TCPHeaderClass : public PacketHeaderClass {
public:
        TCPHeaderClass() : PacketHeaderClass("PacketHeader/TCP",
                         sizeof(hdr_tcp)) {
        bind_offset(&hdr_tcp::offset_);
    }
} class_tcphdr;

我以前从未在C++遇到过静态类。相同的属性和用途是什么?

这是一种

不寻常的语法,用于声明名为 class_tcphdrTCPHeaderClass静态实例,相当于

class TCPHeaderClass : public PacketHeaderClass {
public:
    TCPHeaderClass() : PacketHeaderClass("PacketHeader/TCP", sizeof(hdr_tcp)) {
        bind_offset(&hdr_tcp::offset_);
    }
};
static TCPHeaderClass class_tcphdr;

不是类是静态的,而是变量class_tcphdr

您的代码等效于:

class TCPHeaderClass : public PacketHeaderClass { /* etc. */ };
static TCPHeaderClass class_tcphdr;

变量class tcphdr是静态的,而不是类。 C++没有静态类的概念,只有命名空间。在 C# 中查找静态类并喜欢语言。

类不是静态的,它是静态的class_tcphdr