C++中静态类的目的是什么?

6

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

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

我以前没有接触过C++中的静态类。它有哪些属性和用途?

4个回答

10
这是一个不寻常的语法来声明一个名为 class_tcphdr 的静态 实例,它相当于一个 TCPHeaderClass
class TCPHeaderClass : public PacketHeaderClass {
public:
    TCPHeaderClass() : PacketHeaderClass("PacketHeader/TCP", sizeof(hdr_tcp)) {
        bind_offset(&hdr_tcp::offset_);
    }
};

static TCPHeaderClass class_tcphdr;

我猜最好使用单例模式,这样你就知道何时实例化了类。 - Damian

5

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

你的代码等价于:

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

static TCPHeaderClass class_tcphdr;

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

1

这个类不是静态的,而是 class_tcphdr 是静态的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接