p186~p188: 函数声明1.函数只能定义一次,但是可以声明多次. 2.函数的接口:返回类型 + 函数名 + 形参类型 3.为什么要在头文件中进行函数声明???在源文件中定义?暂时理解到,这么做可以增强可读性. 4.含有函数声明的头文件应该被包含到定义函数的源文件中.(例如:#include "diy.h") 分离式编译 & 6.8 & 6.9 1.分离式编译:把源文件割成好几块放在不同的文件夹下.最终要生成可执行文件,就必须告诉编译器源文件在哪里.具体操作如下:…
先看代码(第一个代码片段): console.log(a); var a = 1; 如果你认为这是一段不合法的代码,在调用console.log()的时候会输出undefined,你完全正确.但是如果是下面这样呢? a = 1; var a; console.log(a); 结果输出为1. JavaScript会把var a=1划分为两个语句,var a和a = 1.第一个语句(也就是声明)是在编译阶段处理的,第二个语句(赋值)是在执行阶段处理的. 因此,之前的代码片段实际上是这样执行的: va…
先看以下几段烧脑的代码: f();//=>? var f = function () { console.log("var"); } function f() { console.log("function"); } 控制台打印结果"function". 另一段代码 var f = function () { console.log("var"); } function f() { console.log("f…
这里的问题实质是我们在头文件中直接定义全局变量或者函数,却分别在主函数和对应的cpp文件中包含了两次,于是在编译的时候这个变量或者函数被定义了两次,问题就出现了,因此,我们应该形成一种编码风格,即: 在一个头文件中要想定义一个全局变量,除非我们能够保证这个头文件仅仅只被一个cpp文件包含(也就是main函数所在的那个cpp文件),否则,我们都应该将对应的定义放在这个头文件对应的cpp文件中,仅仅在这个头文件中声明他,这样才能够保证这个变量不被重定义 下面是我找出问题的博客,转载自:C++中重定义…
今天看到accelerated c++上有个简单的vector容器的实现Vec,就再vs2008上编译了下: ///// Vec.h #ifndef GUARD_VEC_H #define GUARD_VEC_H #include <iostream> #include <iterator> #include <memory> //#include <xmemory> template <class T> class Vec { public:…
预编译四部曲 1.创建AO对象 2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined 3.将实参和形参统一 4.在函数体里面找函数声明,值赋予函数体 function fn(a){ console.log(a) //function a(){} var a = 123; console.log(a)//123 function a(){} console.log(a)//123 var b = function(){} console.log(b) //function()…
p182~p185: 函数1.在调用函数和执行return语句的同时,也发生了控制权的转移. 2.函数返回值不能是一个数组.(但是可以返回一个包含数组的对象,或者指向数组的指针) 3.重要概念:名字的作用域和对象的生命周期. 4.对象的生命周期分两种情况:一种是对象定义在函数体外部(包括main函数1),则对象将存在于程序的整个执行过程,第二种是对象定义在函数体内部,被称为自动变量(包括形参和普通局部变量),在块的末尾将被自动销毁. 5.局部静态对象的生命周期是程序的整个执行过程. 6.局部静态…
出处:刘未鹏(pongba) http://blog.csdn.net/pongba)   首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因为并不保证其中一定…
目录 对于C++中类模板的分离式编译的认识 具体的实例 1.对于C++中类模板的分离式编译的认识 为什么C++编译器不能支持对模板的分离式编译(博文链接) 主要内容:编译器编译的一般工作原理.对模版的分离式编译的特殊性(模版的特殊性) 链接: http://blog.csdn.net/pongba/article/details/19130 模版编译的特殊性 对程序进行编译时,对于函数调用,编译器只要求函数的原型在调用点是可见的,至于函数的定义是否存在不做检查(在对程序进行链接时才检查函数的定义…
在C++中随着程序越来越复杂,我们希望把程序的各个部分分别储存在不同的文件中.C++支持的分离式编译(separate compilation)允许我们把程序分割到几个文件中去,每个文件独立编译. 头文件以.h为后缀,主要包含类和函数的声明:实现文件以.cpp为后缀.可以这样理解,头文件中包含就是一些接口声明,而实现文件就是对这些接口进行定义.例如: 文件:Num.h class Num{ private: int num; public: Num(); Num(int); int getNum…