静态对象的声明及初始化不是赋值

声明(并缺省初始化)后再赋值

#include <iostream>
#include <string> void fun(std::string input)
{
static int x; // 声明(及缺省初始化),因为声明为静态对象,所以只执行一次
x = 3; // 赋值, 第二次fun()被调用依然会被执行
std::cout << input << ": " << x << std::endl;
x = 4;
} int main()
{
fun("first");
fun("second");
}
>>>
first: 3
second: 3

声明并初始化后不赋值

#include <iostream>
#include <string> void fun(std::string input)
{
static int x = 3; // 声明并初始化为3,因为声明为静态对象,所以只执行一次
std::cout << input << ": " << x << std::endl;
x = 4;
} int main()
{
fun("first");
fun("second");
}
>>>
first: 3
second: 4

如果不声明为静态对象:

#include <iostream>
#include <string> void fun(std::string input)
{
int x = 3;
std::cout << input << ": " << x << std::endl;
x = 4;
} int main()
{
fun("first");
fun("second");
}
>>>
first: 3
second: 3

c++初始化和赋值的区别的更多相关文章

  1. C++ 初始化与赋值

    1.初始化与赋值的区别: 二者的区别不是看,是否有=这个赋值操作符,而是看操作的时候,对象是否已经有值. 初始化:创建对象,并给它设置初始值. 赋值:对象已经有值,擦除对象的当前值,并使用新值代替. ...

  2. (转)C++初始化与赋值

    来源:http://www.cnblogs.com/chio/archive/2008/10/06/1305145.html 先来个区别说明:赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一 ...

  3. 百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法

    百度编辑器ueditor 异步加载时,初始化没办法赋值bug解决方法 金刚 前端 ueditor 初始化 因项目中使用了百度编辑器——ueditor.整体来说性能还不错. 发现问题 我在做一个编辑页面 ...

  4. php中引用和赋值的区别主要在哪里

    php中引用和赋值的区别 <pphp 的引用允许用两个变量来指向同一个内容. 相当于他们可以是 不同的名字,却可以指向 同一个 物理空间. 赋值,它实际上意味着把右边表达式的值赋给左边的运算数. ...

  5. C语言指针的初始化和赋值

    1.指针的初始化 指针初始化时,"="的右操作数必须为内存中数据的地址,不能够是变量,也不能够直接用整型地址值(可是int*p=0;除外,该语句表示指针为空).此时,*p仅仅是表示 ...

  6. c/c++ 标准容器 之 初始化, 赋值, swap, 比较

    c/c++ 标准容器 之 初始化, 赋值, swap, 比较 知识点 1,容器的初始化,对应代码里的test1 2,标准库array的初始化,对应代码里的test2 3,容器的赋值 ,对应代码里的te ...

  7. java中String new和直接赋值的区别

        Java中String new和直接赋值的区别     对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才 ...

  8. 通过set赋值,与select赋值的区别

    ---通过set赋值,与select赋值的区别.declare @a int--set @a=(select count(*) from TblStudent)select @a=count(*) f ...

  9. GO学习笔记 - 变量在定义时没有明确的初始化时会赋值为“零值 ”。

    官方教程:https://tour.go-zh.org/basics/12 变量在定义时没有明确的初始化时会赋值为 零值 . 零值是: 数值类型为 0 , 布尔类型为 false , 字符串为 &qu ...

  10. C语言结构体数组内带字符数组初始化和赋值

    1.首先定义结构体数组: typedef struct BleAndTspRmtCmd{ char terminal[3]; char note[3]; char rmtCmd[10]; char c ...

随机推荐

  1. cximage总括功能讲解

    CxImage的功能 Constructors  构造函数 Initialization  初始化 File 文件操作,主要是编解码 Generic 图像基本变化 DSP 图像处理操作 Paintin ...

  2. ASP和jq实现url传递参数乱码的escape编码和unescape解码

    <% Function vbsEscape(str)    dim i,s,c,a    s=""    For i=1 to Len(str)        c=Mid(s ...

  3. vue学习笔记:环境搭建

    一.安装node.js node.js的官方地址为:https://nodejs.org/en/download/ 下载好安装包点击安装,基本就是下一步.下一步.... 安装完成后可以通过以下两种方式 ...

  4. Kotlin相关语法

    1.Kotlin的匿名函数 { val  a = 1 val b = 2 a+b } 就是一个不带名字的函数体 2.Kotlin的函数类型 函数类型:用来声明一个函数参数和返回值形式的 特殊数据类型声 ...

  5. Intellij IDEA远程debug

    1.服务器开启远程调试模式,增加JVM启动参数,以支持远程调试 服务器端的tomcat/bin/catalina.sh文件,在第一行添加参数配置如下(要确保下面的端口没有被占用).CATALINA_O ...

  6. excel添加下拉列表

    2016年数据验证,2010是数据校验

  7. git -----已经被跟踪文件如何在本地提交时忽略

    git update-index --assume-unchanged C.md 注:忽略后将不再拉取和提交c.md这个文件 git update-index --no-assume-unchange ...

  8. LNK2038: 检测到“RuntimeLibrary”的不匹配项

    VS编译找到几十个这样的报错,是因为引用的库是Release版本,编译也是这个版本但C语言标准却用的是默认旧版,需要改为2018标准,并且Release版本对应运行库 多线程DLL(/MD),再次编译 ...

  9. 使用Libusb测试USB device

    一. 先准备好测试工具 -- Libusb: 在Linux中使用的话: 首先从 http://www.libusb.org/官网中下载libusb 然后解压之后./configure --> m ...

  10. C# RichTextBox跳转到指定行(文本行跳转和显示行跳转)

    文本行跳转: 对禁止自动换行(WordWrap属性为False)有效 1 /// <summary>跳到指定行</summary> 2 private void JumpToL ...