c++面试(一)

1.在c++中可以通过"::"来直接操作全局变量。

2.i++与++i效率的比较。

(1)內建数据类型时,他们的效率差别不大。

(2)自定义数据类型(类等)的情况,(++i)可以返回对象的引用,而(i++)必须返回对象的值,所以导致在大对象的时候产生了较大的复制开销,效率低。

3.假设浮点变量的名字为x,它与0.0比较:

if((x<=-EPSINON)&&(x<=EPSINON))

if((x<-EPSINON)||(x>EPSINON))

4.注:当表达式中存在无符号类型时,所有的操作数都自动转换成无符。

char getChar(int x,int y)

{

  char c;

  unsigned int a=x;

  (a+y)>10?(c=1):(c=2);

  return c;

}

(1)(7,-7):-7转化成一个很大的数,与7相加正好溢出,其值为0。

(2)(7,-8):-8转化成一个很大的数,与7相加差1就溢出了,返回1。

5.两数交换,推荐使用按位异或的方式。

void swap(int &a,int &b)    //采用引用传参的方式

{

  a^=b;

  b^=a;

  a^=b;

}

6.atexit()函数,在mian()函数执行完后被执行。

头文件:#include <stdlib.h>

atexit()被调用的顺序与他们在main()中注册的顺序相反。

 7.sizeof()  //结构体、类等,大小需要对齐。

(1)普通函数不占内存,只用虚函数占用一个指针大小的内存。  //virtual void print() {}

(2)空类:class A{},编译器会安排一个指针大小的内存。

(3)#pragma pack()  //强行改变对其大小

#include <iostream.h>

#pragma pack(2)

struct test{

  char c;

  short s1;

  short s2;

  int i;

}

int main()

{

  cout << sizeof(test)<<endl;

  return 0;

}

 

=>10

8.inline 内联函数的适用场合:用来定义存取函数(set/get函数等)。

 

posted @ 2016-04-14 20:50  define_ray  阅读(53)  评论(0编辑  收藏  举报