结束类括号后的名称是什么意思

What does the name after the closing class bracket means?

本文关键字:是什么 意思 结束      更新时间:2023-10-16

我遇到过这个代码示例,我记得我以前见过它,我不知道它是用来做什么的,它做什么?我在网上搜索过,但运气不好。

代码:

class C
{
    int x; // a non-static variable, implicitly private
public:
    C() : x(0) {} // default constructor
    // a static member function, which uses a non-static variable perfectly well
    static int Incr(C& instance) { return ++(instance.x); }
} g_c;
int main(void)
{
    C c2;
    return C::Incr(g_c) + C::Incr(c2);
}

最后一个类括号后的g_c是什么意思?

} g_c;

这里,CCD_ 2被声明为类类型CCD_ 3的对象。

这样的构造使您能够创建未命名类型的对象,如:

class  //Nameless class!
{
   //data members
}obj1, obj2;

在本例中,obj1obj2被声明为未被赋予任何名称的类类型的对象—类是无名称!在这种情况下,不能以传统意义(即Type obj1, obj2;意义)声明对象。所以这个结构可以帮助你做到这一点。

您甚至可以在无名称的情况下从其他命名的类派生(并声明无名称类的对象):

class : public A, public B //Nameless class is deriving from A and B
{
   //data members
}obj1, obj2;

简而言之,这种构造确保了用户将无法创建比预期更多的对象,除非某些邪恶的程序员使用/误用/滥用C++11(或模板)作为:

decltype(obj1) obj3; //hehe!

希望能有所帮助!

它是的缩写

class C
{
    ....
};
C g_c;

您使用type variable_name;格式声明变量。例如:

A x;

其中A可以是类的名称。

但是,您也可以在声明新类类型的变量的同时定义类,而不是使用预先存在的类类型:

class { ... } x;

或者定义类并为其命名:

class A { ... } x;

在C++中,通常只定义类并为其命名,但不使用变量:

class A { ... };

但你不必忽略变量。

这只是创建该类对象的一种方法。结构主要使用它们来初始化新变量。