复制
收藏
提问
简洁

#include <iostream> using namespace std; class Sample { int x; public: Sample(int a) { x = a; cout << "constructing object:x=" << x << endl; } }; void func(int n) { static Sample obj(n); //初始化之后 不允许多次初始化 只保留最先一次的结果 } int main() { func(1); func(10); system("pause"); return 0; } 这个程序的结果为什么是这样的

ea08bb83b
0秒前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

程序执行结果

  • 静态局部对象:在func函数中,static Sample obj(n);声明了一个静态局部对象obj,其初始化值由参数n决定。静态局部对象的初始化仅在第一次调用func时发生,之后调用func时不会重新初始化。7

程序分析

  • 第一次调用:当func(1)被调用时,静态局部对象obj被初始化为Sample(1),输出constructing object:x=1
  • 第二次调用:当func(10)被调用时,由于obj已经初始化,不会再次进行初始化,因此没有输出。

程序输出

  • 程序输出为:constructing object:x=17
你觉得结果怎么样?
为什么static成员在函数中只初始化一次?
static成员变量的作用是什么?
C++中static成员变量的生命周期
如何在C++中使用static成员变量?
C++静态成员变量和普通成员变量的区别
C++静态成员变量的初始化时机

以上内容由AI搜集生成,仅供参考

在线客服