摘要:
虚函数在c++中的实现机制就是用虚表和虚指针,但是具体是怎样的呢?从more effecive c++其中一篇文章里面可以知道:是每个类用了一个虚表,每个类的对象用了一个虚指针。具体的用法如下:[cpp]view plaincopyclassA{public:virtualvoidf();virtualvoidg();private:inta};classB:publicA{public:voidg();private:intb;};//A,B的实现省略因为A有virtual void f(),和g(),所以编译器为A类准备了一个虚表vtableA,内容如下:A::f 的地址A::g 的地址B 阅读全文
摘要:
从没想过有人会把这两个毫不相关的概念混为一谈,可招聘时还真就碰到问内联答内嵌的情况。上网一查,原来内嵌汇编也常被叫内联汇编,中文表述IT名词时真就这么乏力么?蹩脚的撞名一个接一个。 内联函数即inline函数,其作用是“建议”编译器展开函数,不是一定展开,除非设置强制内联(如gcc的__attribute__((always_inline)))。展开即把函数代码插入被调用位置,可以节省函数调用的进出栈开销,但会增加代码量。所以一般短小函数适合内联展开,而大函数展开会大大增加指令内存,还可能影响指令cache命中率,得不偿失。 除inline外static也有类似作用:编译器会倾向于展开sta. 阅读全文
摘要:
int access(const char *filename, int amode);amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。这个函数还可以检查其它文件属性:06 检查读写权限04 检查读权限02 检查写权限01 检查执行权限00 检查文件的存在性 阅读全文