`
izuoyan
  • 浏览: 9219233 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

与全局变量构造析构顺序有关的一道面试题(C++)

阅读更多

原文地址:http://blog.csdn.net/wstarx/archive/2006/06/26/836373.aspx

题目是
#include <iostream>
int main()
{
std::cout<<"This is in main"<<std::endl;

return 0;
}

如何在不修改上述代码中mian()里面的部分,使输出的内容为:
Start
This is in main
End

解答:
此题我一开始想到的方法是重写std里得cout类,修改其中<<运算符的实现,经过面试我的高手提示,说是重载这个运算符比较危险,而且需要重写全部的函数不太现实。当时比较沮丧,没有想到其他的办法。

回来后,复习基础知识中发现有关于全局变量介绍的这么一句话:
全局对象在调用 main之前初始化, 在退出main之后析构
真是一语惊醒梦中人,完全可以用申明一个全局变量的方法实现上面这个题目。
具体实现代码如下,就是在main之前加了一个gb类的定义,然后在新建一个这个类的全局变量:

#include "stdafx.h"
#include <iostream>

class gb
{
public:
gb::gb()
{
std::cout<<"start"<<std::endl;
};

gb::~gb()
{
std::cout<<"end"<<std::endl;
};
};

gb a;

int main()
{
std::cout<<"This is in main"<<std::endl;

return 0;
}

分享到:
评论

相关推荐

    C、C++面试题

    ### C、C++面试题深度解析 #### 面试题1:变量的声明与定义的区别 在C和C++中,**变量的声明**与**变量的定义**有着本质的不同。**定义**不仅告诉编译器变量的存在,还会为其分配存储空间;而**声明**仅告知编译器...

    C++和C语言面试题

    ### C++和C语言面试题解析 #### 面试题1:变量的声明与定义的区别 在C++和C语言中,变量的声明与定义有着本质的区别。**定义**不仅告诉编译器变量的类型和名称,还会为该变量分配内存空间。这意味着,一个变量只能...

    高质量c++(内含面试题)

    - **定义文件结构**:定义文件如`.cpp`文件,包含实现细节,应清晰地组织代码块,如先全局变量声明再是函数实现。 - **头文件作用**:提供接口信息,使其他模块可以使用而不需了解具体实现细节。 - **目录结构**:...

    50个C、C++面试题 (1).pdf

    静态存储分配是编译时分配内存,适用于全局变量和静态变量。栈上分配在函数调用时为局部变量分配内存,函数返回时回收。堆上分配则是动态分配内存,程序员需要手动通过new或malloc分配和释放内存。 了解和掌握上述...

    30道 C++ 常见面试题

    ### 30道 C++ 常见面试题解析 #### 1. new、delete、malloc、free的关系 - **new 和 delete**:这两个是C++的运算符,用于对象的动态分配和释放。`new`不仅可以分配内存,还会调用构造函数;`delete`不仅释放内存...

    C++面试题2

    ### C++面试题知识点解析 #### 1. New/delete与malloc/free的联系与区别 - **联系**: `new` 和 `malloc` 都用于在堆上动态分配内存,而 `delete` 和 `free` 用于释放这些内存。 - **区别**: - `new` 和 `delete` ...

    C++与操作系统等面试题64

    ### C++与操作系统面试题解析:函数执行顺序与属性 #### 题目背景与解析 本题目旨在考察应试者对于C++中特定函数执行顺序的理解,特别是那些在`main`函数之前或之后执行的函数。这涉及到C++语言的一些高级特性,如...

    c++经典面试题及答案.docx

    以下是一些关于C++经典面试题的解析: 1. **C++类与C语言结构体(struct)的区别** - 在C++中,类(class)是封装数据和行为的容器,其成员默认为private,提供保护和隐藏数据,而struct的成员默认为public,更...

    c++面试必须知道的问题.

    静态分配则在编译时确定内存分配,如局部变量和全局变量。理解两者之间的区别和适用场景可以帮助避免内存管理错误。 ### 6. this指针 `this`指针在每个非静态成员函数中隐含存在,指向调用该函数的对象。它允许...

    2023最新C++面试题、笔试题,选择题、简答题、判断题

    根据给定文件的信息,我们可以提炼出一系列与C++相关的知识点,并对其进行详细解释: ### C++基础知识及面试要点 #### 左值与右值 - **左值**:指的是具有确定存储地址的对象,例如变量。 - **右值**:通常表示...

    2013扬讯研发笔试题

    3. **局部变量与全局变量**: - 同名的局部变量和全局变量在作用域上有所不同,局部变量仅在定义它的函数或块内部有效,而全局变量在整个程序中都有效。 - 在同一作用域内,局部变量会隐藏同名的全局变量,如果...

    高质量C、C++编程指南(公司面试出题的源头).pdf

    - **定义文件结构:** 定义文件是存放全局变量和宏定义的地方,这部分内容指导如何组织这些内容。 - **头文件作用:** 强调了头文件在C/C++程序中的重要作用,如减少重复代码、方便维护等。 - **目录结构:** 指导...

    C++面试中常见笔试题的分类整理与归纳总结

    ### C++面试中常见笔试题的分类整理与归纳总结 #### 一、多态与虚函数 **题目:** 是不是一个父类写了一个`virtual`函数,如果子类覆盖它的函数不加`virtual`,也能实现多态? **答案:** 在C++中,一个类中的函数...

    腾讯面试题

    根据给定的腾讯面试题的信息,我们可以从中提炼出与Java编程相关的知识点,这些知识点主要集中在C++的基础概念、面向对象编程、模板、宏定义、运算符重载等几个方面。下面是详细的知识点分析: ### 1. 构造函数与析...

    搜狗2017 C++笔试题.pdf

    搜狗2017年的C++笔试题涉及到重载和多态的概念、博弈论策略、构造函数和析构函数的调用顺序、`fork()`函数的使用以及内存区域的分配。对于C++程序员来说,这些知识点是基础且重要的,理解和掌握它们对于编写高效、...

    腾讯2008校园招聘笔试题

    3. 构造与析构函数:题目中的C++代码涉及类继承和构造/析构顺序。当创建`CSub`对象时,首先调用基类`CBase`的构造函数,然后是派生类`CSub`的构造函数。析构时,顺序相反。因此,正确答案是B,显示了构造和析构的...

    c语言面试题

    ### C语言面试题详解 #### 1. new、delete、malloc、free的关系 在C/C++编程中,`new`和`delete`是C++特有的运算符,主要用于对象的动态内存管理,而`malloc`和`free`则是C语言的标准库函数,用于普通的数据类型...

    腾讯笔试题精选二

    - 在C++中,static类型的全局变量只能在定义它的编译模块(文件)中使用,其值在程序运行期间保持不变,且不涉及C++对象的构造和析构。 6. 进程相关知识点: - 进程在退出时会关闭所有打开的文件和网络链接,销毁...

    腾讯技术类笔试笔试题(校园)

    所以,对于题目中给出的代码,构造和析构函数的调用顺序应该是C选项。 4. 全局静态变量: 全局静态变量与普通全局变量的主要区别在于作用域。全局静态变量只在其声明的源文件中可见,而普通全局变量在整个程序中都...

Global site tag (gtag.js) - Google Analytics