IBM笔试题
1.以下代码输出结果是
intp=1;
int q=-1;
int i=-p++-q;
printf("%d \n",i);
答:结果是0。i=-p++-q;相当于i=-p-q;p++;最后p=2,q=-1。因为-的优先级大于++,
2。以下代码输出结果是什么?
注:原题为第三列代码,前两列为作为对照添加的代码
#include<iostream>
using namespacestd;
class CA
{
public:
inti;
virtualvoidff(){i=1;}
voidprint() {printf("%d\n",i);}
};
class CB:publicCA
{
private:inti;
public:
virtualvoidff(){i=2;}
voidprint(){printf("%d\n",i);}
};
class CC:publicCB
{
private:
inti;
public:
virtualvoidff(){i=3;}
voidprint(){printf("%d\n",i);}
};
int main()
{
CB*A=newCC();
A->ff();//调用的是cc类的ff()
A->print();//调用的是CB类的print/()CB类中的i没有被赋值,下面两个对象输出结果原因同上
CC*B=(CC*)newCA();
B->ff();
B->print();
CC*C=(CC*)newCB();
C->ff();
C->print();
}
输出三个随机数。
#include<iostream>
using namespacestd;
class CA
{
public:
inti;
virtualvoidff(){i=1;}
virtualvoidprint() {printf("%d\n",i);}
};
class CB:publicCA
{
private:inti;
public:virtualvoidff(){i=2;}
virtualvoidprint(){printf("%d\n",i);}
};
class CC:publicCB
{
private:inti;
public:
virtualvoidff(){i=3;}
virtualvoidprint(){printf("%d\n",i);}
};
int main()
{CB*A=newCC();//构造的是CC对象
A->ff();//调用的是CC类中的ff()
A->print();//调用的是CC类中的print()
CC*B=(CC*)newCA();
B->ff();
B->print();
CC*C=(CC*)newCB();
C->ff();
C->print();
}
输出 3 1 2
#include<iostream>
using namespacestd;
class CA
{
public:inti;
virtualvoidff(){i=1;}
virtualvoidprint() {printf("%d\n",i);}
};
class CB:publicCA
{
private: inti;
public: virtualvoidff(){i=2;}
};
class CC:publicCB
{
private: inti;
public:
virtualvoidff(){i=3;}
};
int main()
{
CB*A=newCC();
A->ff();
A->print();
CC*B=(CC*)newCA();
B->ff();
B->print();
CC*C=(CC*)newCB();
C->ff();
C->print();
}
输出:随机数 1 随机数.因为只有CA类中有print()函数,只有构造的是CA类的对象时才会输出设定的值。
3。C++比c好的地方。(多选)
C++是面向对象语言,编程更加人性化。利于实现封装、继承、多态。c是面向过程语言
4。inline函数的特点 (多选)
inline函数是将要调用的函数代码替换到调用的地方,这样能减少程序执行时的来回跳转,提高程序执行的效率,但是会增加目标程序代码量,即增加了空间开销。
5。inline&宏的不同(多选)
内联函数和宏的区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编
译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数
像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可以象调用函
数一样来调用内联函数,而不必担心会产生于处理宏的一些问题。内联函数与带参数宏定义的另一个区别是,内联函数的参数类型和返回值类型在声明中都有明确的指定;而带参数宏定义的参数没有类型的概念,只有在宏展开以后,才由编译器检查语法,这就存在很多的安全隐患。
具体参考http://blog.csdn.net/lw370481/article/details/7311668
6。什么叫做抽象
抽象 抽象是哲学的根本特点, 抽象不能脱离具体而独自存在。
我们所看到的大自然景象就是大自然的实物在我们脑海中的抽象。抽象就是我们对某类事物共性的描述。
具体来说,抽象是指:
1、将复杂物体的一个或几个特性抽出去,而只注意其他特性的行动或过程(如头脑只思考树本身的形状或只考虑树叶的颜色,不受它们的大小和形状的限制)。
2、将几个有区别的物体的共同性质或特性,形象地抽取出来或孤立地进行考虑的行动或过程。
抽象是认识复杂现象过程中使用的思维工具,即抽出事物本质的共同的特性而暂不考虑它的细节,不考虑其他因素。