(1)什么是内联函数?
内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内。
(2)为什么要引入内联函数?
当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题。另外,前面我们讲到了宏,里面有这么一个例子:
#define ABS(x) ((x)>0? (x):-(x))
当++i出现时,宏就会歪曲我们的意思,换句话说就是:宏的定义...
随机函数的面试题 来自 http://blog.csdn.net/wuxianglong/article/details/6804216的一道题。 题目: 给定一个函数rand5(),该函数可以随机生成1-5的整数,且生成概率一样。现要求使用该函数构造函数rand7(),使函数rand7()可以随机等概率的生成1-7的整数。 思路: 很多人的第一反应是利用rand5() + rand()%3来实现rand7()函数,这个方法确实可以产生1-7之间的随机数,但是仔细想想可以发现数字生成的概率是不相等的。r...
总所周知,inline函数编译之后,代码被直接放进调用函数中。问题是:如果一个inline函数调用了其他的函数,那么这个函数的代码会像inline函数一样被复制到调用函数中么?我觉得是不会,该怎么验证?[code]void func_02() { puts("This is func_02!"); return; } inline void func_01() { puts("This is func_01!"); func_02(); return 0; } int main() { func_01(); puts("This is main function!"); return 0; } [/cod...
下面的代码有什么问题? class A { public: A() { p=this; } ~A() { if(p!=NULL) { delete p; p=NULL; } } A* p; }; 是引起无限递归? 还是引起错误,无法p赋值? 很不理解.谢谢
好多公司的笔试题都有它,我吃了两次亏,长了一智 文章(一) 内联函数与宏定义 在C中,常用预处理语句#define来代替一个函数定义。例如: #define MAX(a,b) ((a)>(b)?(a):(b)) 该语句使得程序中每个出现MAX(a,b)函数调用的地方都被宏定义中后面的表达式((a)>(b)?(a):(b))所替换。 宏定义语句的书写格式有过分的讲究, MAX与括号之间不能有空格,所有的参数都要 放在括号里。尽管如此,它还是有麻烦: ...
main() { char *p1=“name”; char *p2; p2=(char*)malloc(20); memset (p2, 0, 20); while(*p2++ = *p1++); printf(“%s\n”,p2); }
本帖最后由 mathieu 于 2013-09-05 18:32 编辑 面试题,实现一个变量除以15,不使用/除法运算符和库函数 在网上搜到下面的思路: 我们不妨将A转化一下,加上一定的数字a,使得 (A + a) / 15 = A / 16 ,(A >>4) 求得 a = A >> 16 + 1 最后实现代码:quotient=(i + (i >> 4) + 1 ) >> 4; 我觉得自己实在是过于愚钝,琢磨了半天也没看懂这个思路是什么意思,以及为什么能得出后面的实现代码。有人能帮忙解释下吗? 最后真心问...