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

原创 2006年06月26日 13:20:00
题目是
#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++类大小确定,构造、析构、静态、动态绑定(分析一道Oracle面试题)

 题目给出一段C++代码,要求写出运行结果,代码如下,大家可以自己先试一下:#include using namespace std; class A{ public: A(){ c...
  • jim_wei
  • jim_wei
  • 2011年04月16日 23:57
  • 1219

一道面试题(静态变量,虚函数,构造/析构函数调用顺序等)

#include "stdafx.h" #include using namespace std; static int x = 1; ...

由一道面试题引发的“血案”(静态变量,虚函数,构造/析构函数调用顺序等)

由一道面试题引发的“血案”(静态变量,虚函数,构造/析构函数调用顺序等)       前几天去深圳某大型的医疗器械企业面试C++开发,整个面试过程花了大概有三个小时。面试当然还是老规矩了:HR介绍->...

揭示C++中全局类变量的构造与析构顺序

在完成《专业嵌入式软件开发 — 全面走向高质高效编程》一书后,我将下一本书的创作集点放在了基于C++的面象对象设计与开发上。从现在开始我将陆续推出关于C++和面高对象设计的博文。下面我们切入主题。 ...

全局变量与构造器初始化顺序

package com.yjq.cn.initialize; public class OrderOfInitial { public static void main(String[] ar...

面试题之JavaScript 的全局变量与局部变量

先看一道面试题问:如下代码结果是? var a = 100 ; function test() { alert(a) ; var a = 10 ; alert(a) ;...

C++全局变量初始化顺序

C++全局变量初始化顺序 资料来源:http://topic.csdn.net/t/20051003/09/4305981.html C++中全局变量初始化顺序是不确定的: int ...

C++ 全局对象构造和析构

C++中的全局对象构造析构函数执行时间

javascript经典面试题 全局变量和局部变量 变量作用域

javascript经典面试题 全局变量和局部变量 变量作用域

C++全局构造与析构底层实现

*前一阵儿,被施老师问到C++全局变量是如何构造和析构的。。。?之前看书的时候好像忽略了这个点。。现在补上。。。→_→*...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:与全局变量构造析构顺序有关的一道面试题(C++)
举报原因:
原因补充:

(最多只允许输入30个字)