4

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

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

我以前从未在 C++ 中遇到过静态类。它们的特性和用途是什么?

4

4 回答 4

8

这是一种不寻常的语法来声明被调用的静态实例,相当于TCPHeaderClassclass_tcphdr

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

static TCPHeaderClass class_tcphdr;
于 2012-08-11T23:09:09.107 回答
5

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

您的代码相当于:

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

static TCPHeaderClass class_tcphdr;
于 2012-08-11T23:09:29.410 回答
1

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

于 2012-08-11T23:10:35.033 回答
1

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

于 2012-08-11T23:11:02.337 回答