c++ 自动对象】的更多相关文章

转自: https://www.cnblogs.com/geloutingyu/p/8034904.html 1.自动对象默认情况下,局部变量的生命期局限于所在函数的每次执行期间.只有当定义它的函数被调用时才存在的对象称为自动对象.自动对象在每次调用函数时创建和撤销.该类型局部变量存储在栈上,在动态存储区.局部变量所对应的自动对象在函数控制经过变量定义语句时创建.如果在定义时提供了初始化,那么每次创建对象时,对象都会被赋予指定的初值.对于未初始化的内置类型局部变量,其初值不确定.当函数调用时结束…
一.关键点 对象的生命周期:程序执行过程中,该对象存在的那段时间 局部对象:形参.函数体内部定义的变量 二.自动对象 自动对象:只存在于块执行期间的对象 包括:局部变量.形参 三.局部静态对象 特点:该种局部变量的生命周期一直到程序终止 声明局部静态变量:在声明语句前加上static关键字 补充:内置类型的局部静态变量的默认初始值为0 [例子] #include <iostream> #include <vector> #include <cctype> #includ…
9.1 等待函数 (1)WaitForSingleObject(hObject,dwMilliseonds); ①dwMilliseconds为INFINITE时表示无限等待 ②dwMilliseconds=0时表示立即返回,即使它要等待的条件还没满足 ③dwMilliseconds为其它值时(单位为ms),其返回值有三种情况:A.WAIT_OBJECT_0表示等待的对象触发.WAIT_TIMEOUT表示超时.WAIT_FAILED:表示可能传入了无效句柄,可进一步调用GetLastError来…
静态局部变量 静态局部变量. 从称呼上我们可以看出,静态局部变量首先是一个局部变量,因此其只在定义它的函数内有效,冠以静态的头衔后,其生存期就被延长了,不会随着函数的返回而被撤销.我们可以这样来理解:静态局部变量就是在程序生存期间一直有效,但只能在定义它的函数中使用的一种变量. 静态局部变量的声明比较简单,在声明局部变量的时候,加上关键字static就可以了.下面是一个用局部静态变量计算阶乘的具体例子. #include “stdio.h” int fac(int n) { static int…
7.5局部对象 在C++语言中,对于每一个变量和对象,都有其各自的作用域和生存期,这两个概念一个是空间的,一个是时间的.对象的作用域指的是该变量的程序文本区,对象的生存期则是程序执行过程中对象存在的时间. 7.5.1自动对象 只有当定义它的函数被调用的时候才存在的对象称为自动对象,自动对象在每次调用函数时创建和销毁. 局部变量所对应的自动对象在函数控制经过变量定义语句时创建.如果在定义时提供了初始化,那么每次创建对象时,对象都会被初始化为指定的初值.对于未初始化的内置类型局部变量,其初值是不确定…
一.对象语义与值语义 1.值语义是指对象的拷贝与原对象无关.拷贝之后就与原对象脱离关系,彼此独立互不影响(深拷贝).比如说int,C++中的内置类型都是值语义,前面学过的三个标准库类型string,vector,map也是值语义 2.对象语义指的是面向对象意义下的对象 对象拷贝是禁止的(Noncopyable) OR 一个对象被系统标准的复制方式复制后,与被复制的对象之间依然共享底层资源,对任何一个的改变都将改变另一个(浅拷贝) 3.值语义对象生命期容易控制 4.对象语义对象生命期不容易控制(通…
一.对象的生存期 对于 static 对象和自动对象,它们都有着严格定义的生存期. 全局对象:在程序启动时分配,在程序结束时销毁. 局部自动对象:在对象定义语句时分配,在离开块时销毁 局部 static 对象:在对象定义语句时分配,在程序结束时销毁 对于动态分配对象,其生存期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁. 二.对象的位置 1. 静态内存 保存:局部 static 对象.类 static 数据成员.全局变量 2. 栈内存 保存:局部自动对象 3. 自由空间(堆)…
类和对象 8.1 面向对象程序设计方法概述 到目前为止,我们介绍的是C++在面向过程的程序设计中的应用.对于规模比较小的程序,编程者可以直接编写出一个面向过程的程序,详细地描述每一瞬时的数据结构及对其的操作过程.但是当程序规模较大时,就显得力不从心了.C++就是为了解决编写大程序过程中的困难而产生的. 8.1.1 什么是面向对象的程序设计 面向对象的程序设计的思路和人们日常生活中处理问题的思路是相似的.在自然世界和社会生活中,一个复杂的事物总是由许多部分组成的.当人们生产汽车时,分别设计和制造发…
析构函数也是一个特殊的成员函数.它的作用与构造函数相反.它的名字是在类名的前面加一个“~”符号.在C++中“~”是位取反运算符.当对象的生命结束时,会自动执行解析函数.以下几种情况会执行析构函数: 1.如果在一个函数中定义了一个对象,当这个函数被调用结束时,对象应该释放,在对象释放前自动执行析构函数. 2.static局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只在main函数结束或调用exit函数时,才调用staitic局部对象的析构函数. 3.如果定义了一个全局对象,则在程序…
1概述 在所有的计算机程序中,一个基本的目标是操作一些数据,然后获得一些结果.为了操作这些数据,需要为这些数据分配一段内存,我们可以将这段内存称为变量.为了方便操作,以及程序可读性方面的考虑,需要使用一个有意义的名称来引用这段内存,这个名称就是变量名. 将名称和一段内存关联起来的工作可以分成两个阶段来进行,分别是变量的声明和定义.在变量声明的时候,只是引入了一个名称,该名称并没有和一段特定的内存关联.也就是说,在声明变量的时候,只是引入了一个助记符,并没有执行内存分配.在定义变量的时候,将前面声…