语言
liudows
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
关于ASSERT(断言)使用的规则--摘自《高质量C/C++编程指南》
摘自《高质量C/C++编程指南》Page 41-42...程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用。断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。示例6-5 是一个内存复制函数。在运行过程中,如果assert 的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地转载 2006-10-10 21:04:00 · 1320 阅读 · 0 评论 -
C/C+语言struct深层探索
C/C+语言struct深层探索作者:宋宝华 出处:PConline1. struct的巨大作用 面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉 及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用stru转载 2006-10-10 21:19:00 · 798 阅读 · 0 评论 -
C++和C#语言对比
将不同语言进行对别是个有趣的话题,语言之前的区别不仅在语法上,其实还牵扯到背后设计思路的不同。学习语言第一步是学习其语法,第二步是学习相关库的使用,第三步是学习如何正确地使用该语言,扬长避短。 我在C++上用功多年,后来由于工作需要开始开发.net应用程序。自从上手C#之后,的确觉得C#是windows上开发应用程序的不二选择,可以说是好用极了。用C#写程序,基本不会在语言级别上遇到一些原创 2012-03-22 15:47:39 · 391 阅读 · 0 评论 -
C++中对象成员的内存布局
太长时间没有用C++了,尽管我在它身上花费了太多的时间和精力,但是在我的实践中,却是以C#和Java为主。最近因为要写机顶盒程序,终于又捡起了多年前的宝贝。但是有的知识已经模糊了,或者有些混淆了。比如对象成员的内存布局。 在C#中,任何对对象的引用都是地址。而在C++中,通过对象名的引用代表的是该对象的整个内存空间。举例如下: 在C#中定义类T class T {原创 2012-03-15 16:26:23 · 338 阅读 · 0 评论 -
虚析构函数、纯虚析构函数、虚构造函数
一. 虚析构函数 我们知道,为了能够正确的调用对象的析构函数,一般要求具有层次结构的顶级类定义其析构函数为虚函数。因为在delete一个抽象类指针时候,必须要通过虚函数找到真正的析构函数。 如: class Base { public: Base(){} virtual ~Base(){} }; class Derived: public Base转载 2012-03-22 17:24:15 · 280 阅读 · 0 评论 -
隐蔽的内存泄漏
凡是由用户自己管理内存申请和注销的语言都难以避免内存泄漏的问题,这也是C/C++存在的主要问题之一。内存泄漏对于需要长期运行的程序来说有着严重的影响。为避免内存泄漏,从道理来说很简单,就是通过new得到的内存一定要记得delete。问题在于,我们可能陷入纷繁复杂的代码而忘记了还曾经new过,或者当我们想要delete时,已经失去了那片曾经拽在手里的“引用”了。 C++中一个隐蔽的内存泄漏例子原创 2012-03-22 12:11:10 · 379 阅读 · 0 评论 -
C++和C#语言对比 - 对象定义、构造和赋值
下面的代码在C++和C#中都是符合语法且常见的,但是执行过程和结果却是大相径庭。 Class T { …… } void foo() { T t1 = new T(); T t2; t2 = t1; T t3 = t1; ...... } C#对象只能在堆上构造,必须使用new关键字。C++对象可以在栈上构造,也可原创 2012-03-22 14:56:10 · 416 阅读 · 0 评论
分享