c++
loopsaker
这个作者很懒,什么都没留下…
展开
-
“separate compilation” & “Linkage”
1. 先来看段代码 //file1.cpp #include using std::cout; int x=1; void f(){ cout<<x; } 如果单独编译两个文件,能够得到结果。 如果,再把编译得到的两个object链接,也是没有问题的。 对于file2.cpp,如果按照我以前的想法,我觉得这里为什么不需要inc原创 2014-08-20 17:03:09 · 1034 阅读 · 0 评论 -
name mangling & extern "C"
c++因为支持overloading,最初的时候,c++的代码会被翻译成c的代码,然后再由c的编译器来编译。 那么overloading functions在翻译成c的代码的时候,不能被翻译成同一个名字。 在翻译的过程中,就要结合它的return type,argument给予它新的名字。 这个东西叫做name mangling: 【2014-08-20】【chp9】9.2原创 2014-08-20 23:31:08 · 834 阅读 · 0 评论 -
学习c++其实有点反直觉
和朋友说起,学习c++的一点感触: 你应该知道,当时,发明c++的人,想要设计一门新的语言。 这门语言其实并不简单地能够支持面向对象的编程范式。 还支持通用编程等范式。 但是,他在设计一个新的东西的同时,又希望,曾经成千上万的c代码不需要太大的修改,就能够继续编译使用。 也就是说,那些程序,我们不需要重新写。 他的方法很巧妙,他设计的所有的新东西,都有一些特性,使得原创 2014-08-20 11:17:40 · 599 阅读 · 0 评论 -
【c++】为什么类中静态(static)成员不能在类的定义内初始化?
先看一段代码:原创 2014-08-25 20:03:32 · 4226 阅读 · 2 评论 -
C++里面的一个technique : Type Traits
在Generic Programming里面,我们会想要知道pass过来的东西的type。 如果是user defined的type,你能够想到的方法是,哦,定义一个标准吧!在所有type里面都要增加一个field,用来说明它是什么type。 但是,对于一些native的type,你该怎么办呢? c++里面,用了一个techniques。 对于,我需要知道type信息的那些type原创 2014-09-23 10:15:09 · 799 阅读 · 0 评论