收藏本版 |订阅

编程语言 今日: 0|主题: 642|排名: 14 

  • C++中用#define访问类的私有成员
    我们知道,类的私有成员在类的外部是不能被访问的。 例如有下面的这个简单的类: class ClxECS { private: int iPrivate; }; 那么下面的这个函数是不能通过编译的:   void ECS_test() { ClxECS lx; lx.iPrivate = 13;   cout 但是,我们并不是没有办法来访问类的私有成员。 其实,方法很简单,只要在类的声明前面加上 ...
    2132 [db:作者] 发表于 2016-10-17 编程语言
  • C++箴言:如何访问模板化基类中的名字
      假设我们要写一个应用程序,它可以把消息传送到几个不同的公司去。消息既可以以加密方式也可以以明文(不加密)的方式传送。如果我们有足够的信息在编译期间确定哪个消息将要发送给哪个公司,我们就可以用一个 template-based(模板基)来解决问题:   这个能够很好地工作,但是假设我们有时需要在每次发送消息的时 ...
    2136 [db:作者] 发表于 2016-10-17 编程语言
  • C++中理解“传递参数”和异常之间的差异
    从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ... }; //一个类,具体是什么类 // 在这里并不重要 void f1(Widget w); // 一些函数,其参数分别为 void f2(Widget& w); // Widget, Widget&,或 void f3(const Widget& w); // Widget* 类型 void f4(Widget *pw); void f5(const Widg ...
    2135 [db:作者] 发表于 2016-10-17 编程语言
  • C++箴言:理解隐式接口和编译期多态
    object-oriented programming(面向对象编程)的世界是围绕着 explicit interfaces(显式接口)和 runtime polymorphism(执行期多态)为中心的。例如,给出下面这个(没有什么意义的)的 class(类)。 class Widget {  public:   Widget();   virtual ~Widget();   virtual std::size_t size() const;   virtual ...
    2138 [db:作者] 发表于 2016-10-17 编程语言
  • Win32下两种用于C++的线程同步类(上)
    线程同步是多线程程序设计的核心内容,它的目的是正确处理多线程并发时的各种问题,例如线程的等待、多个线程访问同一数据时的互斥,防死锁等。Win32提供多种内核对象和手段用于线程同步,如互斥量、信号量、事件、临界区等。所不同的是,互斥量、信号量、事件都是Windows的内核对象,当程序对这些对象进行控制时会自动转换 ...
    2211 [db:作者] 发表于 2016-10-17 编程语言
  • C++对象布局及多态实现之成员函数的调用
    从这部分开始我们除了利用内存的信息打印来进行探索外,更多的会通过跟踪和观察编译器产生的汇编代码来理解编译器对这些语言特性的实现方式。汇编方面知识的讨论超出了本文的范围,我只对和我们讨论相关的汇编代码进行解析。理解本文要讨论的知识并不需要有很完整的汇编知识,但必须了解起码的概念。 下面我们看看引入虚继 ...
    2213 [db:作者] 发表于 2016-10-17 编程语言
  • C++启蒙之控制结构
    语句是按次序执行的:同一个函数中第一个语句首先执行,接着执行第二个……当然,少数的程序--包括我们需要编写的解决书店问题的程序--可以只使用一个次序执行。作为代替,编程语言提供了多种控制结构,允许更加复杂的执行路径。这一部分将简单地介绍C++提供的一些控制结构。 练习7: 编译一个包含错误的嵌套注释的程序。 ...
    2208 [db:作者] 发表于 2016-10-17 编程语言
  • C++对象布局及多态实现之带虚函数的类
    如果类中存在虚函数时,情况会怎样呢?我们知道当一个类中有虚函数时,编译器会为该类产生一个虚函数表,并在它的每一个对象中插入一个指向该虚函数表的指针,通常这个指针是插在对象的起始位置。所谓的虚函数表实际就是一个指针数组,其中的指针指向真正的函数起始地址。我们来验证一下,定义一个无成员变量的类C040,内含 ...
    2210 [db:作者] 发表于 2016-10-17 编程语言
  • C++对象布局及多态探索之菱形结构虚继承
    这次我们看看菱形结构的虚继承。虚继承的引入本就是为了解决复杂结构的继承体系问题。上一篇我们在讨论虚继承时用的是一个简单的继承结构,只是为了打个铺垫。 我们先看看这几个类,这是一个典型的菱形继承结构。C100和C101通过虚继承共享同一个父类C041。C110则从C100和C101多重继承而来。 struct C041 {  C041() : c_(0x ...
    2208 [db:作者] 发表于 2016-10-17 编程语言
  • 如何编写异常安全的C++代码
    关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有 ...
    2141 [db:作者] 发表于 2016-10-17 编程语言
  • C++箴言:谨慎使用模板元编程
    template metaprogramming (TMP)(模板元编程)是写 template-based(基于模板)的运行于编译期间的 C++ 程序的过程。考虑一下:一个 template metaprogram(模板元程序)是用 C++ 写的运行于 C++ 编译器中的程序。当一个 TMP 程序运行完成,它的输出——从 templates(模板)实例化出的 C++ 源代码片断——随后被正常编译 ...
    2136 [db:作者] 发表于 2016-10-17 编程语言
  • C++箴言:用成员函数模板接受兼容类型
    smart pointers(智能指针)是行为很像指针但是增加了指针没有提供的功能的 objects。例如,《C++箴言:使用对象管理资源》阐述了标准 auto_ptr 和 tr1::shared_ptr 是怎样被应用于在恰当的时间自动删除的 heap-based resources(基于堆的资源)的。STL containers 内的 iterators(迭代器)几乎始终是 smart pointers(智 ...
    2138 [db:作者] 发表于 2016-10-17 编程语言
  • 菜鸟也能搞定C++内存泄漏
    背景 C++内存分配与释放均由用户代码自行控制,灵活的机制有如潘多拉之盒,即让程序员有了更广的发挥空间,也产生了代代相传的内存泄漏问题。对于新手来说,最常犯的错误就是new出一个对象而忘记释放,对于一般小应用程序来说,一点内存空间不算什么。但是当内存泄漏问题出现在需要24小时运行的平台类程序上的时候,将会使 ...
    2141 [db:作者] 发表于 2016-10-17 编程语言
  • More Effective C++:指针与引用的区别
    指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它 ...
    2137 [db:作者] 发表于 2016-10-17 编程语言
  • C++之父Bjarne谈C++中的STL模板
    在1994年,我主要关心的是如何使ISO C++标准尽可能地好--同时在它所包含的特性和规范的质量两个方面--并获得多数人的同意。即使人们不接受某种规范,也不会影响它(规范)的良好性。ISO标准没有强制力,因此有些人认为自己不值得浪费时间来适应它,除非(群体)社团的压力能够使他们确信该规范的价值。对于一个实现者来说, ...
    2138 [db:作者] 发表于 2016-10-17 编程语言
  • C宏——智者的利刃,愚者的恶梦!
    水平不高不低的C++程序员最喜欢挂在嘴上的一句话就是:C宏,万恶之首,错误的开端,应该被废弃。 请注意,我用了一句不敬的修饰语“水平不高不低的”。为什么这么说?因为水平低都插不上话,都在在静静地听老前辈布道呢。水平高的,比如Bane Stroustrup老人家,也只是说若干种场合下C++语言能够提供比C macro更好的解决方案 ...
    2143 [db:作者] 发表于 2016-10-17 编程语言
  • C++中new和delete导致的内存分配问题详解
    在嵌入式系统中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控。 具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全。具体地说,当一个对象被消除时,它的析构函数能够安全的释放所分配的内存。这当然是个好事情,但是这种使用的简单性使得程序员们过度使用new 和 delete,而不注意在 ...
    2138 [db:作者] 发表于 2016-10-17 编程语言
  • 保持C/C++程序代码的可伸缩性
       在今天,已有许多的32位应用程序感到,在32位平台上可用的虚拟内存受到了一定的限制,对程序开发者来说,即使是开始关注64位平台时,也不得不维护软件的32位版本,这就需要一种方法,以使代码的两个版本都保持相当的可伸缩性。    目前的内存剖析工具能帮助确定,当程序达到峰值内存使用量时,都发生了什么,但是这 ...
    2142 [db:作者] 发表于 2016-10-17 编程语言
  • C/C++程序员应聘常见面试题深入剖析
    1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们 ...
    2140 [db:作者] 发表于 2016-10-17 编程语言
  • C++内存管理详解
    伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 1、内存分配方式 ...
    2138 [db:作者] 发表于 2016-10-17 编程语言
  • 下一页 »

    快速发帖

    还可输入 80 个字符
    您需要登录后才可以发帖 登录 | 立即注册

    本版积分规则

    关注公众号

    相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

    Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

    在本版发帖
    关注公众号
    QQ客服返回顶部