匿名命名空间 VS static
问题 匿名命名空间和关键词 static 都可以让其声明的变量或函数变为内部链接属性,那么它们之间的区别是什么? 回答 首先,匿名命名空间比关键词 static 的功能更丰富,因此我们更推荐使用前者。…
问题 匿名命名空间和关键词 static 都可以让其声明的变量或函数变为内部链接属性,那么它们之间的区别是什么? 回答 首先,匿名命名空间比关键词 static 的功能更丰富,因此我们更推荐使用前者。…
问题 我在写 C++ class 的定义部分时,代码都是放在后缀 *.h 文件中,最近在接触 Boost 库的时候发现里边使用的都是 *.hpp 后缀,那么两者在使用上有什么区别? 回答 *.hpp …
问题 我最近正在读一本书,里边说道 if (a < 901) 比 if (a <= 901) 执行地要快。这是真的么? 回答 首先,这个观点在大多数平台上是错的。 我们可以来看下两者的汇编…
问题 在 C 语言中,下面的用法哪个最好? 回答 取决于你用来干什么。 static const int var = 5 #define var 5 enum { var = 5 } 如果需要传指针,…
问题 为什么虚函数在编译期间无法确定下来? 回答 看上面的代码就很容易知道,编译器无法在编译期判断 bp->func() 调用的是 Base::func() 还是 Derived::func()…
问题 C 语言中怎么将一个大的数组的所有成员初始化为相同的值? 回答 C 语言 上面都是赋值为 0 的用法,如果是其它的值,只能用 for 或者 while C++ 语言 上面的 C 语言的办法同样适…
问题 标准有统一的接口可以实现得到当前程序所在的目录么? 回答 C++ 17 中可以使用 std::filesystem::current_path,参见 …
问题 C/C++ 中,声明和定义有什么区别? 回答 1. 声明不分配存储空间,定义会分配。 定义会实实在在地创造这个东西,而声明只是告诉编译器有这么个东西,它的创造在别处。 2. 声明可以多次,但定义…
问题 下面的文本文件, 其中每行的数字,比如 5 3 是一对坐标,如何使用 C++ 按行读取获取这些坐标? 回答 首先,定义一个 ifstream 对象, 接着有两种方法可以实现, 按空格和换行符进行…
问题 C 语言中, i++ 和 ++i 有什么区别?在 for 语句中应该用哪个? 回答 ++i 先使 i 先自加一,然后返回 i, i++ 先返回 i,再使 i 自加一, 在 for 语句中,建议使…
问题 比如下面的语句, 为什么不直接写成这样, 回答 其实是为了把这个宏模拟成一条真实的语句。 宏被替换就会变成这样, 很明显,这是不符合预期的,你不得不这么做, 但总有人会忘记加上 {}。所以加上 …
回答 如何在不使用加、减、乘、除、取余的情况下,实现除以 3 的功能? 这个数字既可能是无符号整型也可能是有符号的。 回答
问题 比如 int operator() vs operator int(),这两者有什么区别? 回答 int operator() 是函数调用运算符(Function Call Operator),…
问题 下面的代码哪个更快? 这是我的一个面试官提出的,我给出的答案是:一样快! 但面试官说, while(1) 的更快! 真的是这样么? 回答 对于现代编译器来说,肯定是一样快的! 但对于程序员来说可…
问题 就比如下面的代码, 会报如下的错, 为什么会这样? 回答 case 语句其实就是标签(label),就像 goto 语句那样,解决这个问题其实很简单,只需加一对大括号,以表明作用域即可,
问题 去除 std::string 头尾空格有没有什么好办法? 回答
问题 如何使用 extern 关键字在不同的源文件间共享变量? 回答 首先需要知道 声明 和 定义 的区别。声明并不分配内存,定义才会。 下面是一个用法,
问题 什么是段错误?在 C 和 C++ 中有区别么?段错误和空悬指针有关系么? 回答 段错误是由于程序访问了本不属于它的的内存而引起的错误。 每当遇到段错误时,你就应该知道程序在内存访问上出错了。比如…
问题 上面的代码运行不会报错,并且会输出 58,这是为什么? 回答 局部变量确实是不可以被外部使用的。 你的这种情况只是恰巧那块内存区是存在的,但它并不属于 foo 函数里的 a 所有,在实际编程中一…
问题 C 语言中如何确定数组的元素个数? 回答 但上面的写法还有点不足。如果以后数组 a 的类型变为其它类型,那么 sizeof(int) 这种写法就会出现兼容问题,所以建议下面的写法, 如果你的程序…