21xrx.com
2024-09-20 05:32:50 Friday
登录
文章检索 我的文章 写文章
C++11 静态变量
2023-07-07 17:32:19 深夜i     --     --
C++11 静态变量 面向对象编程 类成员函数

在C++11标准中,静态变量的定义发生了一些改变。以前,在类中定义静态变量时需要将其在类外进行初始化,而在C++11中,可以在类内初始化静态变量。

使用静态变量的好处是它们只会被初始化一次,即使类实例化多次。这在一些场景下非常有用,比如计数器变量。C++11允许在类的定义中声明静态成员变量并初始化。

例如,假设我们有一个类叫做`Foo`,我们想要在类中定义一个静态整数变量`bar`并将其设置为0。在C++11中,我们可以像下面这样写:


class Foo

public:

 static int bar = 0;

;

这个定义语句会将`bar`设置为0并分配内存。我们可以像访问其它类变量一样使用`Foo::bar`来访问这个静态变量。在类外定义这个变量是可行的,但不再是必须的。

C++11也引入了一种新的初始化方法,称为委托构造函数。这允许一个构造函数调用另一个构造函数来完成初始化。这非常有用,因为现在我们可以在一些情况下使用默认的初始化值。

例如,假设我们有一个复杂的类`Widget`,它有很多不同的成员变量。我们想要创建一个构造函数,它仅需要一个`int`参数,并将它传递给`Widget`的默认构造函数。在过去,我们可能需要手动初始化每个成员变量,但现在我们可以很容易地使用委托构造函数来完成初始化。这个构造函数可以是这样的:


class Widget {

public:

 Widget() { ... } // 默认的构造函数

 Widget(int arg) : Widget() { } // 委托构造函数

};

这个构造函数需要一个`int`参数,但现在它调用默认构造函数来完成初始化。这允许我们使用默认的初始值并减少代码重复。

总之,在C++11中定义静态变量变得更加方便。我们不再需要在类外显式初始化它们,而是可以在类内完成初始化。此外,委托构造函数的引入使得类的初始化更加容易。这些改变使得C++11成为了更好的编程语言。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复