C++
HiHa423
埋头苦干,风雨兼程。
展开
-
模板函数的声明和定义为何不能分开放在两个文件中?
对于普通函数来说,声明放在头文件,定义放在源文件,其它地方要使用该函数时,仅需要包含头文件即可。因为编译器编译时是以一个源文件作为单元编译的,当它遇到不在本文件中定义的函数时,若能够找到其声明,则会将此符号放在本编译单元的外部符号表中,链接的时候自然就可以找到该符号的定义。而对于模板函数来说(在编译器遇到使用模板函数的代码时才会将模板函数实例化),若将模板函数声明放在tem.h,模板定义放在tem.cpp,然后在main.cpp中包含该头文件,调用add函数,此时仅有声明,找不到定义,因此编译器只能实例化原创 2021-09-22 15:25:08 · 779 阅读 · 0 评论 -
指针变量的加减运算
指针变量可以加减,但是只能与整型数据加减。此时加减的含义并不是其地址值进行了加减,而是与指针指向的数据类型相关联。如果指针变量 p 的值是0x20000000,那么 p=p+2 的值并不是 0x20000002,如果在 32 位的操作系统上,p 是指向整型数据的指针变量,那么 p=p+2 之后,p 的地址值变成 0x20000008,也就说地址值加了: sizeof(int)*2。加减的数字是以指针指向的数据类型为量度的,p+2 表示 p 在内存中前移两个int的距离,如果 p 不是 int 类型,其他..原创 2021-09-09 15:45:00 · 7271 阅读 · 0 评论