C++中的`const`是一个非常容易混淆的概念,我认为这主要是因为`const`的设计不够完善导致的,尽管目前C++11中新加入了`constexpr`关键词,解决了一部分问题,但是还有很多本质上的问题没有得到解决,甚至很多人都没有认识到这些问题的本质。我在这里解释一下我对C++中`const`的理解,并且试图分析其所解决的本质问题,对于部分问题,给出一些其他方案。

很多人都不明白,不同的编程语言具有不同的表述能力,这就是我们为什么有了汇编之后还需要更高级的编程语言。在软件规模愈发庞大的现在,C 和 C++ 语言表述能力的不足越发的明显了。我们应该尽可能的选用高级的编程语言完成我们的任务,在需要性能的地方,使用 Profiling,而不是在一开始就选用 C/C++ 这样的语言去工作。

阅读全文 »

实际使用中会有需要提前检测出是否会发生算数溢出,C# 语言中提供了 checked 关键字来解决这一问题,C/C++ 语言又该怎样做呢?本文从汇编语句的层面,对几种检查加法溢出的方法进行了比较和分析。受实验环境和个人知识所限,本文的应用范围仅限于 X86-64 体系结构。

阅读全文 »

现在一谈到补码,很多人都会立刻说补码就是反码加一,虽然没说错,但是却没说到点子上。我更希望能够听到有人说补码就是负数对应原码的表示方式。这篇文章主要论述补码的本质,以及有符号整数二进制表示的原因。

阅读全文 »

在面试中经常考到,实际项目中也经常需要面临这样一个问题,即如何判断一个整数操作是否发生了溢出。C# 语言提供了 checked 关键字用于处理这一问题,在 C 语言中我们可以使用内嵌汇编语句来检查溢出。

阅读全文 »

重载和覆盖是笔试和面试中经常考的两个概念。这两个概念从概念本身到实现机理都不相同,但是表现形式却有相似之处。本文从实现机理入手,深入讲解两者的不同之处。

阅读全文 »

面试中经常会问面向对象技术中的三大特征,但是却没有一本书把这三个特征讲透彻,这里尝试综合几本书中的内容,从不同角度理解这三大特征。

阅读全文 »
0%