5.9 对象的生存期

5.9 对象的生存期

对象的生存期是指对象从被创建开始到被释放为止的存在时间。根据对象的生存期的不同,可以将对象分为以下三种类型:

1. 局部对象

局部对象是在函数体或程序块内定义的对象。当函数或程序块被调用时,构造函数被调用,局部对象被创建。当程序退出定义该对象所在的函数体或程序块时,析构函数被调用,局部对象被释放。局部对象的作用域小,生存期也短。函数的形参属于局部对象。

2. 静态对象

静态对象分为内部静态对象和外部静态对象。当程序第一次执行到定义的静态对象时,静态对象被创建,并调用构造函数。静态对象的生存期从程序开始到程序结束,因此它的生存期较长。当程序结束时,调用析构函数释放静态对象。

  • 内部静态对象:定义在函数体或程序块内,作用域小,但生存期长。
  • 外部静态对象:定义在文件中,作用域从定义时起到文件结束时止,作用域较大,生存期也较长。

3. 全局对象

全局对象定义在某个文件中,作用域包含该文件的整个程序。全局对象在程序开始时调用构造函数创建,在程序结束时调用析构函数释放。全局对象的作用域最大,生存期也最长。

示例代码

以下是一个展示不同对象生存期的例子:

#include <iostream>
#include <cstring>

class A {
public:
    A(const char *st) {
        strcpy(string, st);
        std::cout << "Constructor Called for " << string << std::endl;
    }
    ~A() {
        std::cout << "Destructor Called for " << string << std::endl;
    }
private:
    char string[50];
};

void fun() {
    static A staticObject("StaticObject");
    A funObject("FunObject");
    std::cout << "In fun()." << std::endl;
}

A globalObject("GlobalObject");

int main() {
    A mainObject("MainObject");
    std::cout << "In main(), before calling fun()" << std::endl;
    fun();
    std::cout << "In main(), after calling fun()" << std::endl;
    return 0;
}

程序输出说明

Constructor Called for GlobalObject
Constructor Called for MainObject
In main(), before calling fun()
Constructor Called for FunObject
Constructor Called for StaticObject
In fun().
Destructor Called for FunObject
In main(), after calling fun()
Destructor Called for MainObject
Destructor Called for StaticObject
Destructor Called for GlobalObject
  • 全局对象globalObject 在程序开始时被创建,并调用构造函数。程序结束时,调用析构函数。
  • 局部对象mainObjectfunObject 在进入其作用域时创建并调用构造函数。mainObjectmain() 函数结束时调用析构函数,而 funObjectfun() 函数结束时调用析构函数。
  • 静态对象staticObject 在第一次调用 fun() 时创建,并在程序结束时调用析构函数。

结论

通过上述程序和输出,可以清晰地看到不同类型对象的生存期。局部对象生存期最短,静态对象生存期长但受限于作用域,全局对象生存期最长且作用域最大。理解对象的生存期对于编写高效、可靠的代码至关重要。

 

 

内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值