分类目录归档:C/C++基本语法

学好C/C++的语法,这样才能更好地运用C/C++,只发表技术性文章。

轻轻松松从C一路走到C++系列文章之一
HOT

C++技术固然是很时髦的,许多C用户都想在尽可能短的时间内为自己贴上C++的标签。介绍C++的书很多,但只有那些已经侥幸入门的用户才偶尔去翻翻,仍有不少在C++门口徘徊的流浪汉。 本文只针对C用户,最好是一位很不错的老用户(譬如他在遇到最简单的问题时都尝试着使用指针),通过一些C和更好的C++(本文用的是Borland C++3.1版本)例程介绍有关C++的一些知识,让读者朋友们“浅入深出”,轻轻...
阅读全文

C++箴言:理解inline化的介入和排除 (4)
HOT

这些代码并不代表真正的编译器所生成的,因为真正的编译器会用更复杂的方法处理异常。尽管如此,它还是准确地反映了 Derived 的“空”构造函数必须提供的行为。不论一个编译器的异常多么复杂,Derived 的构造函数至少必须调用它的数据成员和基类的构造函数,而这些调用(它们自己也可能是 inline 的)会影响它对于 inline 化的吸引力。  同样的原因也适用于 Base 的构造函数,所以如果它...
阅读全文

C++箴言:理解inline化的介入和排除 (3)
HOT

甚至在你从来没有使用函数指针的时候,未 inline 化的 inline 函数的幽灵也会时不时地拜访你,因为程序员并不必然是函数指针的唯一需求者。有时候编译器会生成构造函数和析构函数的 out-of-line 拷贝,以便它们能得到指向这些函数的指针,在对数组中的对象进行构造和析构时使用。  事实上,构造函数和析构函数对于 inline 化来说经常是一个比你在不经意的检查中所能显示出来的更加糟糕的候...
阅读全文

C++箴言:理解inline化的介入和排除 (2)
HOT

max 是一个模板的事实引出一个观察结论:inline 函数和模板一般都是定义在头文件中的。这就使得一些程序员得出结论断定函数模板必须是 inline。这个结论是非法的而且有潜在的危害,所以它值得我们考察一下。 inline 函数一般必须在头文件内,因为大多数构建环境在编译期间进行 inline 化。为了用被调用函数的函数本体替换一个函数调用,编译器必须知道函数看起来像什么样子。(有一些构建环境可...
阅读全文

C++箴言:理解inline化的介入和排除 (1)
HOT

inline 函数——多么棒的主意啊!它们看起来像函数,它们产生的效果也像函数,它们在各方面都比宏好得太多太多,而你却可以在调用它们时不招致函数调用的成本。你还有什么更多的要求呢?   实际上你得到的可能比你想的更多,因为避免函数调用的成本只是故事的一部分。在典型情况下,编译器的优化是为了一段连续的没有函数调用的代码设计的,所以当你 inline 化一个函数,你可能就使得编译器能够对函数体实行上下...
阅读全文

C++类对象的深拷贝、浅拷贝构造函数 (1)
HOT

在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如: int a = 10; int b =a;自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如: #include <iostream>usingnamespacestd; classTest { public: Test(inttemp) ...
阅读全文

头文件的结构
HOT

头文件由三部分内容组成:(1)头文件开头处的版权和版本声明(参见示例1-1)。(2)预处理块。(3)函数和类结构声明等。假设头文件名称为 graphics.h,头文件的结构参见示例1-2。【规则1-2-1】为了防止头文件被重复引用,应当用ifndef/define/endif 结构产生预处理块。【规则1-2-2】用 #include <filename.h> 格式来引用标准库的头文件(...
阅读全文

匈牙利命名法
HOT

这个方法可能很多人都听说过,包括我在内的一些人也试图去使用它,可是还是觉得自己的好,但是现在看来这种想法是错误的。再解释解释吧。这些符号可以多个同时使用,顺序是先m_,(这上标记指成员变量)再指针,再简单数据类型,再其他。例如:m_lpszStr, 表示指向一个以0字符结尾的字符串的长指针成员变量。 a Array b Boolean by Byte c Char //有符号型字符 cb Char...
阅读全文

C++中使用union的几点思考(2)
HOT

 同理,除了不能加构造函数,析构函数/拷贝构造函数/赋值运算符也是不可以加。  此外,如果我们的类中包含了任何virtual函数,编译时,我们将收到如下的错误信息:  error C2621: union ‘__unnamed‘ : member ‘obj‘ has copy constructor  所以,打消在union中包含有构造函数/析构函数/拷贝构造函数/赋值运算符/虚函数的类成员变量的...
阅读全文

C++中使用union的几点思考(1)
HOT

 这段时间整理旧资料,看到一些文章,虽然讲的都是些小问题,不大可能用到,但也算是一个知识点,特整理出来与大家共享。与此相关的那篇文章的作者的有些理解是错误的,我写此文,也是纠正为了作者的一些错误认识。当然,如果我的理解有任何错误,也恳请大家批评指正。  C++虽说被B.S.称作一门新语言,但它毕竟与C有着千丝万缕的联系,虽然B.S.一再坚持,但我还是愿意把C++看作是C ++。  我们应该按照C中...
阅读全文

C/C++编程新手错误语录(3)
HOT

这样定义的数据结构非常具有通用性,如果上述32平台上的数据发送到16位平台上接收,在16位平台上仅仅需要修改UINT16、UINT32的定义:#define unsigned int UINT16 //16位无符号整数#define unsigned long UINT32 //32位无符号整数  几乎所有的优秀软件设计文档都是这样定义数据结构的。(6)“switch和if …else…可随意替换...
阅读全文

C/C++编程新手错误语录(2)
HOT

规则4 如果要用其它模块定义的变量和函数,直接包含其头文件即可。许多程序员喜欢这样做,当他们要访问其它模块定义的变量时,他们在本模块文件开头添加这样的语句:extern int externVar;   抛弃这种做法吧,只要头文件按规则1完成,某模块要访问其它模块中定义的全局变量时,只要包含该模块的头文件即可。(4)“数组名就是指针”  许多程序员对数组名和指针的区别不甚明了,他们认为数组名就是指...
阅读全文

C/C++编程新手错误语录(1)
HOT

 1.引言  还记得当年学数学、英语都有个窍门,那就是搞个错题集。经常复习一下这个错题集,就可以避免下次犯同样的错误。而几乎所有的程序员都是从犯错误开始的,我们也很有必要总结一下编程新手的常见错误,本文的目的在于此。文中所列出的都是笔者在项目开发中接触到的新手真实的言谈,笔者学学文革腔调,姑且称之为“错误语录”。2.语录(1)“我的程序都是对的,可结果不对”  想想你的周围,是不是也有人说这样的话...
阅读全文

用C语言实现参数个数可变的函数
HOT

采用C语言编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎样实现的呢?   C编译器通常提供了一系列处理这种情况的宏,以屏蔽不同的硬件平台造成的差异,增加程序的可移植性。这些宏包括va—start、va—a...
阅读全文
12 页 / 共 18