C++类的静态成员初始化详细讲解

下面详细讲解“C++类的静态成员初始化详细讲解”的攻略。

1. 静态成员的定义和初始化

在C++中,静态成员是指属于类的成员,而不是属于某个对象的成员。它们被定义为类的属性,并且在类的所有实例中共享。静态成员包含静态变量和静态函数。

当定义一个静态成员时,需要在类定义内部进行声明,在类外部进行定义和初始化。其语法格式为:

class ClassName {
  public:
   // 声明静态成员变量或者静态成员函数
   static int staticMember;
};

// 在类外定义并初始化静态成员变量
int ClassName::staticMember = 0;

2. 静态成员的访问

静态成员可以通过类名或者对象名来访问。当通过对象名访问静态成员时,可以使用对象名和点号(.)或者访问运算符(->)。但是,由于静态成员不属于对象,因此最好使用类名来访问静态成员。

class ClassName {
  public:
    static int staticMember;
};

int main() {
  // 使用类名访问静态成员
  ClassName::staticMember = 10;

  // 使用对象名访问静态成员
  ClassName obj;
  obj.staticMember = 20;
}

3. 静态成员初始化的规则

静态成员变量的初始化必须在类外部进行,并且只能进行一次,可以在类定义外定义和初始化静态成员变量,也可以在类定义内部定义和初始化静态成员变量,但那样只适用于C++17及之后的版本。

在C++11之前,只能将静态成员变量定义和初始化分别放在一个源文件中,而不能在类定义内部进行初始化。否则会导致“有多个定义”的错误。

下面是一个在类外部定义和初始化静态成员变量的示例:

class ClassName {
  public:
    static int staticMember;
};

int ClassName::staticMember = 0;

int main() {
  // 使用类名访问静态成员变量
  ClassName::staticMember = 10;

  // 使用对象名访问静态成员变量
  ClassName obj;
  obj.staticMember = 20;
}

4. 静态成员初始化的两个示例

示例1:静态常量成员变量的初始化

静态常量成员变量的初始化需要在类定义内部完成,并且要使用constexpr关键字,表示该成员变量是一个常量,并在编译时被求值。

class ClassName {
  public:
    constexpr static int constStaticMember = 10;
    static int staticMember;
};

int ClassName::staticMember = 0;

int main() {
  // 使用类名访问静态常量成员变量
  std::cout << ClassName::constStaticMember << std::endl;
}

示例2:静态成员函数的初始化

静态成员函数和普通的成员函数一样,它们的初始化也是在类定义内部完成的。和普通成员函数不同的是,静态成员函数只能访问静态成员变量。

class ClassName {
  public:
    static int staticMember;
    static void staticMemberFunc() {
      std::cout << "静态成员函数" << std::endl;
    }
};

int ClassName::staticMember = 0;

int main() {
  // 使用类名访问静态成员函数
  ClassName::staticMemberFunc();
}

以上就是“C++类的静态成员初始化详细讲解”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++类的静态成员初始化详细讲解 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • navicat如何利用sql语句查询表所有字段的字段名、类型及长度

    要查询表所有字段的字段名、类型及长度,可以使用以下SQL语句: DESCRIBE 表名; 或者 SHOW COLUMNS FROM 表名; 这两条SQL语句的作用是一样的,都可以查询表的元数据信息。下面将介绍如何在Navicat中使用这两条SQL语句。 首先,打开Navicat,连接数据库。 示例一:使用DESCRIBE语句 在Navicat中双击要查询的数…

    other 2023年6月25日
    00
  • 查看自己的ip地址 如何查看自己ip地址

    查看自己的IP地址攻略 如果你想查看自己的IP地址,有几种方法可以帮助你完成。下面是一个详细的攻略,包含了两个示例说明。 方法一:使用命令行(Windows、Mac和Linux通用) 打开命令行终端。在Windows上,你可以按下Win键+R,然后输入\”cmd\”并按下回车键。在Mac上,你可以使用Spotlight搜索并打开\”终端\”应用程序。在Lin…

    other 2023年7月29日
    00
  • js表单提交的几种方式

    以下是JS表单提交的几种方式的完整攻略,包括两个示例说明。 1. JS表单提交简介 在Web开发中,表单是常用的用户输入控件。当用户填写完表单后,需要将表单数据提交到服务器进行处理。JS提供了多种表单提交方式,可以根据具体情况选择不同的方式。 2. JS表单提交的几种方式 以下是JS表单提交的几种方式: 2.1 submit()方法 submit()方法可以…

    other 2023年5月9日
    00
  • docker更新镜像

    当然,我很乐意为您提供有关“Docker更新镜像”的完整攻略。以下是详细的步骤和两个示例: 1 Docker更新镜像 Docker更新镜像是指将本地镜像更新为最新版本。这可以通过拉取最新版本的镜像并重新构建容器来实现。 2 使用Docker更新镜像 要使用Docker更新镜像,请按照以下步骤操作: 2.1 拉取最新版本的镜像 首先,使用docker pull…

    other 2023年5月6日
    00
  • Mysql计算字段长度函数之LENGTH函数

    当我们在MySQL数据库中查询数据时,有时候需要获取某个字段的长度,这个时候就可以用到MySQL中内置的LENGTH函数。该函数可以计算出某个字段值的字符数或者字节数。下面是详细的攻略: 1. LENGTH函数的语法 LENGTH(str) 其中,str是指定要计算长度的字符串,可以是一个列名、变量或者字符串字面值。 2. LENGTH函数的返回值 LENG…

    other 2023年6月25日
    00
  • v2raymacos安装 配置与使用

    v2raymacos安装配置与使用攻略 v2ray是一款开源的网络代理工具,可以用于科学上网加密通信等。本攻略介绍如何在mac上安装、配置和使用v2ray。 1. 安装v2ray 1.1 使用Homebrew安装 在macOS上,使用Homebrew来安装v2ray。打开终端,输入以下命令: brew install v2ray 优秀文章推荐: 推荐几个靠谱…

    other 2023年5月7日
    00
  • Win10内置杀软Windows Defender怎么从右键菜单扫描项去掉?

    要从 Win10 内置的杀软 Windows Defender 的右键菜单扫描项中去掉,可以按照以下步骤进行: 打开注册表编辑器。 在注册表中定位到:HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers\WindowsDefender。 将 WindowsDefender 键下的 ShellFolder 子键删除。 关…

    other 2023年6月27日
    00
  • cdr怎么制作页面卷角效果?

    制作页面卷角效果一般使用CSS技术实现,以下是一个详细的攻略: Step 1:HTML结构 首先,我们需要在HTML中创建一个包含内容的主体部分,并在其中嵌入一个用于制作卷角效果的HTML元素。我们可以使用一个span元素或者一个div元素,这个元素要为其定义一个CSS类样式。 <body> <div class="page-wr…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部