Welcome 微信登录

首页 / 软件开发 / C++

C++之父Bjarne谈C++在2005年

C++之父Bjarne谈C++在2005年

C++之父Bjarne谈C++在2005年2008-01-05 天极 陶刚现在我们仍然很难估计C++程序员的数量,但在2003年,IDC报告说有超过300万的全职C++程序员,这个数据还是比较可信的。虽然我不能够精确地计算,但是我所拥有的所有指标都显示,C++在经过前十年(1985-1994)的爆炸性增长之后,后十年(1995-2004)其使用人数一直在稳定地增长。我还没有经历过其增长停止的时期。我猜想,虽然面对竞争产品的有力宣传和肆无忌惮的促销活动,它仍...
C++箴言:类型转换时定义非成员函数

C++箴言:类型转换时定义非成员函数

C++箴言:类型转换时定义非成员函数2008-01-05《C++箴言:声明为非成员函数的时机》阐述了为什么只有 non-member functions(非成员函数)适合于应用到所有 arguments(实参)的 implicit type conversions(隐式类型转换),而且它还作为一个示例使用了一个 Rational class 的 operator* function。我建议你在阅读本文之前先熟悉那个示例,因为本文进行了针对《C++箴言:声明...
C++箴言:用成员函数模板接受兼容类型

C++箴言:用成员函数模板接受兼容类型

C++箴言:用成员函数模板接受兼容类型2008-01-05smart pointers(智能指针)是行为很像指针但是增加了指针没有提供的功能的 objects。例如,《C++箴言:使用对象管理资源》阐述了标准 auto_ptr 和 tr1::shared_ptr 是怎样被应用于在恰当的时间自动删除的 heap-based resources(基于堆的资源)的。STL containers 内的 iterators(迭代器)几乎始终是 smart point...
C/C++程序员应聘常见面试题深入剖析

C/C++程序员应聘常见面试题深入剖析

C/C++程序员应聘常见面试题深入剖析2008-01-051.引言本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿到...
C宏——智者的利刃,愚者的恶梦!

C宏——智者的利刃,愚者的恶梦!

C宏——智者的利刃,愚者的恶梦!2008-01-05 vckbase 乾坤一笑水平不高不低的C++程序员最喜欢挂在嘴上的一句话就是:C宏,万恶之首,错误的开端,应该被废弃。请注意,我用了一句不敬的修饰语“水平不高不低的”。为什么这么说?因为水平低都插不上话,都在在静静地听老前辈布道呢。水平高的,比如Bane Stroustrup老人家,也只是说若干种场合下C++语言能够提供比C macro更好的解决方案,而没有完全否定C macro...
C++箴言:理解new-handler的行为

C++箴言:理解new-handler的行为

C++箴言:理解new-handler的行为2008-01-05当 operator new 不能满足一个内存分配请求时,它抛出一个 exception(异常)。很久以前,他返回一个 null pointer(空指针),而一些比较老的编译器还在这样做。你依然能达到以前的目的(在一定程度上),但是我要到本文的最后再讨论它。在 operator new 因回应一个无法满足的内存请求而抛出一个 exception 之前,它先调用一个可以由客户指定的被称为 new...
C++中接口与实现分离的技术

C++中接口与实现分离的技术

C++中接口与实现分离的技术2008-01-05在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。下面用一个最简单的例子来说明。类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下:lxTest.h文件内容:class ClxTest{ public...
菜鸟也能搞定C++内存泄漏

菜鸟也能搞定C++内存泄漏

菜鸟也能搞定C++内存泄漏2008-01-05背景C++内存分配与释放均由用户代码自行控制,灵活的机制有如潘多拉之盒,即让程序员有了更广的发挥空间,也产生了代代相传的内存泄漏问题。对于新手来说,最常犯的错误就是new出一个对象而忘记释放,对于一般小应用程序来说,一点内存空间不算什么。但是当内存泄漏问题出现在需要24小时运行的平台类程序上的时候,将会使可用内存飞速减少,最后耗尽系统资源,导致系统崩溃。所以学会如何防止并检查内存泄漏,是一个合格的c++程序员必...
内存陷阱:驯服C++中的野指针

内存陷阱:驯服C++中的野指针

内存陷阱:驯服C++中的野指针2008-01-05 什么是野指针?一个母亲有两个小孩(两个指针),一个在厨房,一个在卧室,(属于不同的代码块,其生存期不同)母亲让在厨房的小孩带一块蛋糕(指针指向的对象)给在卧室的小孩,这样在卧室的孩子才肯写作业。但这个在厨房的小孩比较淘气,他在走出厨房时自己将蛋糕吃了,没能带出来。而在卧室的没有吃到蛋糕,所以不肯完成他的作业。结果母亲却不知道卧室的孩子没有吃到蛋糕,还以为作业完了。结果第二天她就被老师召唤到办公室了。事情麻...
浅谈C/C++内存泄漏及检测工具

浅谈C/C++内存泄漏及检测工具

浅谈C/C++内存泄漏及检测工具2008-01-05 温馨小屋 对于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较...
单元测试工具C++ Test简介

单元测试工具C++ Test简介

单元测试工具C++ Test简介2008-01-05C++ Test是Parasoft公司出品的一个针对C/C++源代码进行自动化单元测试的工具。它可以对源代码进行三种测试:白盒测试、黑盒测试以及回归功测试。白盒测试C++ Test对C/C++源代码进行分析,针对所有的类的成员函数(包括:公共的、保护的以及私有类型的)进行测试。测试的方法是判断当输入一个非法的参数时,有关函数能否正确处理。(Record命令)在此状态下软件针对指定的文件、类或者是函数自动生...
如何编写异常安全的C++代码

如何编写异常安全的C++代码

如何编写异常安全的C++代码2008-01-05关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有在真正异常的时候,才使用异常。那什么是“真正异常的时候”?在回答这个问题以前,让我们...
C++内存分配五种方法的区别

C++内存分配五种方法的区别

C++内存分配五种方法的区别2008-01-05 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作会自动回收。自由存储区,就是那些由mall...
C++中new和delete导致的内存分配问题详解

C++中new和delete导致的内存分配问题详解

C++中new和delete导致的内存分配问题详解2008-01-05在嵌入式中使用C++的一个常见问题是内存分配,即对new 和 delete 操作符的失控。具有讽刺意味的是,问题的根源却是C++对内存的管理非常的容易而且安全。具体地说,当一个对象被消除时,它的析构函数能够安全的释放所分配的内存。这当然是个好事情,但是这种使用的简单性使得程序员们过度使用new 和 delete,而不注意在嵌入式C++环境中的因果关系。并且,在嵌入式系统中,由于内存的限制...
More Effective C++:不使用多态性数组

More Effective C++:不使用多态性数组

More Effective C++:不使用多态性数组2008-01-05 csdn wang_junjie类继承的最重要的特性是你可以通过基类指针或引用来操作派生类。这样的指针或引用具有行为的多态性,就好像它们同时具有多种形态。C++允许你通过基类指针和引用来操作派生类数组。不过这根本就不是一个特性,因为这样的代码根本无法如你所愿地那样运行。假设你有一个类BST(比如是搜索树对象)和继承自BST类的派生类BalancedBST:class BST { ....
More Effective C++:类型转换

More Effective C++:类型转换

More Effective C++:类型转换2008-01-05仔细想想地位卑贱的类型转换功能(cast),其在程序设计中的地位就象goto语句一样令人鄙视。但是它还不是无法令人忍受,因为当在某些紧要的关头,类型转换还是必需的,这时它是一个必需品。不过C风格的类型转换并不代表所有的类型转换功能。一来它们过于粗鲁,能允许你在任何类型之间进行转换。不过如果要进行更精确的类型转换,这会是一个优点。在这些类型转换中存在着巨大的不同,例如把一个指向const对象的...
More Effective C++:指针与引用的区别

More Effective C++:指针与引用的区别

More Effective C++:指针与引用的区别2008-01-05指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一...
C++信徒的摩西十戒

C++信徒的摩西十戒

C++信徒的摩西十戒2008-01-05这是C++信徒的摩西十戒,虽然说的是十戒,实际上有十四条,但这十四条都值得将其铭刻在显示器的边缘,供C++程序员们每日膜拜。我要将其铭刻在我的blog里,铭刻在我的记忆里,直到它们成为我思维的一部分。第0条:不要拘泥于细节(了解哪些东西不应该标准化)·缩进:不必规定如何缩进,每个人遵从一个自己喜欢的规则即可。·行长:今天已经没有太大的必要限制80个字符了,当然,越有利于阅读越好。&midd...
<< 171 172 173 174 175 176 177 178 179 180 >>