==【注意】==
程序语言只是我们与计算机交流并让计算机实现我们创造性思想的工具,可以并鼓励深入掌握一门语言,但千万别沉迷于钻某种语言的牛角尖,一定要把握好二者间的度

本帖属不定时连载贴,以试卷的形式提出一个比较基础的问题供大家思考讨论,问题的解析将在下一更新贴中一并给出,这样做是希望还不清楚问题的朋友有自己思考和讨论的时间,希望大家能从这些帖子中有所收获。

贴中问题属我在学习C\C++过程中遇到的一些语法或者比较隐晦的程序问题,其中有自己的总结,也不乏网络上搜索到的经典解析,在此分享给大家,希望能起到抛砖引玉的作用

我已认真检查过自己的帖子,但难免有疏忽,如大家在阅读过程中仍发现有问题,请及时通知,我会及时更正,以免误导大家,万分感谢^_^


【No.7  C++对象的构造与析构时间】
由于连载形式,每帖第二部分都配有上一问题的解答。为了保持帖子的针对性和一致性,此贴仅供交流讨论本次问题,若大家对上一问题有任何疑问,请通过解答末尾的传送链接前往该问题贴回复讨论

[问题No.7]
请写出以下代码的执行结果
复制内容到剪贴板

代码:

#include<iostream>
using namespace std;

//-------------------------------------------------
class Foo
{
  public:
    Foo(void)
    {
      cout<<"constructing..."<<endl;
      ++_counter;
    }
    Foo(const Foo &p)
    {
      cout<<"copy constructor..."<<endl;
      ++_counter;
    }
    ~Foo(void){ cout<<"destructing..."<<endl; }
  
  public:
    static int _counter;
};

int Foo::_counter = 0;

//---------------------------------------------
Foo global;

Foo Trap(Foo foo)
{
  Foo local = foo;
  Foo *heap = new Foo(global);
  *heap = local;
  Foo pa[4] = { local, *heap };
  return *heap;
}

int main(int argc, char **argv)
{
  Foo p;
  Trap(p);

cout<<Foo::_counter<<endl;

return EXIT_SUCCESS;
}

No.6 switch的陷阱浅析

输出结果
0

问题浅析
本题出错,大多是由于初学者自己主观臆断switch-case块的执行方式,此题中,i == 1,有的午饭就主观地认为case 1:分支被执行,x = 5,然后输出为5.但是,switch-case语句的陷阱就在这里,case分支不是if-else这样的非此即彼的判断语句,case只是一个入口,i == 1时,找到入口case 1:,因此执行这个入口之后的所有语句,直到swtich语句块结束。
那么如何杜绝此问题的发生呢?见如下代码

复制内容到剪贴板

代码:

swtich(i)
{
  case 1: x = 5; break;
  case 2: ++x; break;
  case 3: ++x; break;
  default: break;
}

只要执行了一条分支语句就break出switch语句块,这样就实现了我们之前臆断的程序功能,并且,如果不是有意要执行多个case分支,请时刻记住,每一个case分支(包括default)后都应该填上break语句,并且不管你有没有必要写default分支,也请写上,并break,这样做是是程序的可读性得到保障, 以免别的程序员误以为你忘记了default情况的处理。

本文转自Bill_Hoo 51CTO博客,原文链接:http://blog.51cto.com/billhoo/733265,如需转载请自行联系原作者

【No.7 C++对象的构造与析构时间】相关推荐

  1. C++对象的构造和析构

    对象的构造和析构 前言 构造和析构函数 析构函数定义及调用 构造函数的分类及调用 无参数构造函数 有参构造函数 拷贝构造函数调用时机 默认构造函数 前言 创建一个对象时,常常需要作某些初始化的工作,例 ...

  2. C++之临时对象的构造与析构

    1.临时对象产生的时间点 对象作参数(值传递).返回对象(值传递) 2.临时对象析构的时间点(重点.难点) 3.临时对象会降低效率,但是哪些情况必须使用临时对象? [注]真正的临时对象是看不见的,它不 ...

  3. 逆向看C++ new申请堆对象的构造,析构函数调用

    转自:coNgY1 先来放总结,以后回看的时候方便回忆: 对new 而言,如果是空类也会分配一字节. 对 new x[],这种在地址最前面会多分配四字节的空间来保存分配的对象个数. new x[]这种 ...

  4. (黑马C++)L03 对象的构造和析构

    对象的初始化和清理 构造函数和析构函数会被编译器自动调用,完成对象初始化和对象清理工作.即使自己不提供初始化操作和清理操作,编译器也会增加默认的操作,所以编写类就应该顺便提供初始化函数. 构造函数和析 ...

  5. C++对象模型8——构造函数和析构函数中对虚函数的调用、全局对象构造和析构、局部static数组的内存分配

    一.构造函数和析构函数中对虚函数的调用 仍然以https://blog.csdn.net/Master_Cui/article/details/109957302中的代码为例 base3构造函数和析构 ...

  6. C++中对象的构造顺序和析构顺序

    文章目录 1 C++中单个对象的构造和析构顺序 1.1 单个对象的构造和析构顺序 2 C++中多个对象的构造和析构顺序 2.1 局部对象的构造顺序 2.2 堆对象的构造顺序 2.3 全局对象的构造顺序 ...

  7. 对象 普通po转_谈谈C++对象的构造

    对 象 造化从来自有神 如何对此亦无尘 平生出处皆非妄 老去功名始见真 这是小编以"构造对象"为主题让九歌同学创作的七言绝句.九歌同学以一种非常玄妙的文风向我们介绍了对象的构造,但 ...

  8. C++ - 构造和析构 2018-01-10

    /*回顾上节的内容:1.实现中的事情 物 ->类 <属性 -> 成员变量> <行为 -> 成员函数>2.访问权限 public private (protec ...

  9. glibc全局构造与析构(解释了_do_global_ctors_aux)----写的相当不错!!!

    原文地址::http://www.xuebuyuan.com/839077.html 11.4  C++全局构造与析构 在C++的世界里,入口函数还肩负着另一个艰巨的使命,那就是在main的前后完成全 ...

最新文章

  1. 没水?没电?从非洲难民到美国华盛顿知名游戏开发者,有梦想的人,世界会为他让路!...
  2. VSCode 小鸡汤 第00期 —— 安装和入门
  3. 5添加一块盘_win系统,Linux系统,重装系统后,添加盘简易教程
  4. 基于Hadoop的云盘系统客户端技术选型说明
  5. Oracle11g新特性之动态变量窥视
  6. Linux应用程序设计之网络基础编程
  7. springboot 单元测试
  8. getheaderfields java_java – HttpsURLConnection getHeaderFields没有返回set-cookie
  9. CodeForces - 427D Match Catch(后缀数组/广义后缀自动机)
  10. no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
  11. PHP 图片上传类 缩略图
  12. 常用http状态码说明,status
  13. 和大家分享一下我最近的编程心得!!!
  14. 数字信号处理(第四版)pdf
  15. 基于springboot高校社团管理系统
  16. 面向光栅薄膜光学性能探究的Rsoft建模与仿真
  17. window下webrtc编译m84
  18. 七、最短路径——弗洛伊德(Floyd)算法
  19. svg基础+微信公众号交互(二)
  20. 大数据的应用场景都有哪些(交通篇)

热门文章

  1. Java操作shell脚本
  2. 使命召唤ios_使命召唤的精巧UI:战地
  3. 祝大家七夕快乐,邀你源码共读,顺带发点红包
  4. .NET实现之(WebBrowser数据采集—续篇)
  5. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
  6. CYQ.Data 数据框架 V4.0 开源版本发布(源码提供下载,秋色园V2.5版本标配框架)
  7. 检查你的项目的引用包依赖关系
  8. tcp有限状态机分析
  9. Oracle interview
  10. 2021年江苏高考各科成绩查询,江苏2021年高考总分及各科分数