在这里,我们将看到如何在C ++中初始化私有静态成员变量的初始化。我们可以将静态成员(函数或变量)放在C ++类中。对于静态变量,我们必须在定义类后对其进行初始化。
要初始化,我们必须使用类名称,然后使用范围解析运算符(::),然后使用变量名称。现在我们可以分配一些值。
以下代码将说明静态成员初始化技术。
#include <iostream> using namespace std; class MyClass{ private: static int st_var; public: MyClass(){ st_var++; //increase the value of st_var when new object is created } static int getStaticVar() { return st_var; } }; int MyClass::st_var = 0; //initializing the static int main() { MyClass ob1, ob2, ob3; //three objects are created cout << "Number of objects: " << MyClass::getStaticVar(); }
输出结果
Number of objects: 3
问题内容: 我想知道静态变量(在类中)何时出现在图片中(初始化)?是在实例构造函数首次调用之后还是在类加载之后?什么时候加载类? 问题答案: 哦,那很复杂。这取决于是否设置了标志,而标志(在C#中)又取决于是否有静态构造函数。更糟的是;在.NET 4中, 我相信 行为发生了变化,使其比以前更加“懒惰”。 坦白说,我不会在此处编写任何特定行为的代码。简单:只要您使用常规代码访问静态字段,它们就会在尝
这是一个与这篇文章相似的问题。我认为最有希望的答案与模板化静态初始化有关。这是该答案中的类: 用法: 这适用于结构或类以及基类型。我想做的是将其与
本文向大家介绍C ++静态成员变量及其初始化,包括了C ++静态成员变量及其初始化的使用技巧和注意事项,需要的朋友参考一下 静态C ++成员变量是使用static关键字定义的。类中的静态成员变量由所有类对象共享,因为在内存中只有它们的一个副本,而与该类的对象数量无关。 如果没有以任何其他方式初始化静态类成员变量,则在创建类的第一个对象时将其初始化为零。 给出了一个演示静态成员变量及其在C ++中的
问题内容: 我有以下代码: 这给了我以下错误: 解析错误:语法错误,在第19行的/home/user/Sites/site/registration/inc/registration.class.inc中出现意外的’(’,期待’)’ 所以,我想我做错了什么…但是如果不那样做怎么办?如果我用常规字符串更改mktime内容,它将起作用。所以,我知道我能做到这一点 的那种 像.. 有人有指针吗? 问题答
问题内容: 这是一段Java代码: 它如何编译?初始化后已执行变量“ ture”的声明。据我所知,静态块和字段已经按照它们出现的顺序执行了。 现在,为什么实例块中的值9已被打印3次?顺便说一句,该类的实例已创建了3次。那不是功课,我正在学习Java进行认证。 问题答案: 关于第一个问题,静态块确实按照它们出现的顺序进行处理,但是在处理静态块之前,先处理声明。声明作为类 准备工作 的一部分(JLS§
问题内容: 你将如何在Java中初始化静态变量? 方法一:静态初始化器 方法二:实例初始化器(匿名子类)或其他方法? 各自的优缺点是什么? 这是说明两种方法的示例: 问题答案: 在这种情况下,实例初始化器只是语法糖,对吗?我不明白为什么你只需要一个额外的匿名类即可进行初始化。如果正在创建的类是最终的,那将是行不通的。 你也可以使用静态初始化程序创建不可变映射: