我要投稿 投诉建议

C/C++面试试题

时间:2022-09-26 13:52:58 面试试题 我要投稿
  • 相关推荐

C/C++面试试题

  1、C语言里的STRUCT与C++里的CLASS有何区别?

C/C++面试试题

  2、面向对象有哪些特性?

  3、何时会用到多态?如何实现多态?

  4、怎样实现虚函数?

  5、子类覆盖了基类的方分法时,子类如何调用基类的方法?

  6、MFC和SDK是什么关系?

  7、什么是HDC?什么是CWnd?

  8、如果让你设计一个异形的按钮,你将如何实现?谈一下你的思路!

  谈一下你做的项目用到了哪些技术,在这个项目的实现过程中你遇到了哪些问题,到最后你是怎么样解决这些问题?从这个项目中你学会了什么?

  9、 结构与联合有和区别?

  1、 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

  2、 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

  10、 下面关于“联合”的题目的输出?

  a)

  #i nclude

  union

  {

  int i;

  char x[2];

  }a;

  void main()

  {

  a、x[0] = 10;

  a、x[1] = 1;

  printf(“%d”,a、i);

  }

  答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

  b)

  main()

  {

  union{ /*定义一个联合*/

  int i;

  struct{ /*在联合中定义一个结构*/

  char first;

  char second;

  }half;

  }number;

  number、i=0×4241; /*联合成员赋值*/

  printf(“%c%c\n”, number、half、first, mumber、half、second);

  number、half、first=’a'; /*联合中结构成员赋值*/

  number、half、second=’b';

  printf(“%x\n”, number、i);

  getch();

  }

  答案: AB (0×41对应’A',是低位;Ox42对应’B',是高位)

  6261 (number、i和number、half共用一块地址空间)

  11、 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。

  答案:

  char *strcpy(char *strDest, const char *strSrc)

  {

  if ( strDest == NULL || strSrc == NULL)

  return NULL ;

  if ( strDest == strSrc)

  return strDest ;

  char *tempptr = strDest ;

  while( (*strDest++ = *strSrc++) != ‘\0’)

  ;

  return tempptr ;

  }

  12、 已知String类定义如下:

  class String

  {

  public:

  String(const char *str = NULL); // 通用构造函数

  String(const String &another); // 拷贝构造函数

  ~ String(); // 析构函数

  String & operater =(const String &rhs); // 赋值函数

  private:

  char *m_data; // 用于保存字符串

  };

  尝试写出类的成员函数实现。

  答案:

  String::String(const char *str)

  {

  if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断

  {

  m_data = new char[1] ;

  m_data[0] = ‘\0′ ;

  }

  else

  {

  m_data = new char[strlen(str) + 1];

  strcpy(m_data,str);

  }

  }

  String::String(const String &another)

  {

  m_data = new char[strlen(another、m_data) + 1];

  strcpy(m_data,other、m_data);

  }

  String& String::operator =(const String &rhs)

  {

  if ( this == &rhs)

  return *this ;

  delete []m_data; //删除原来的数据,新开一块内存

  m_data = new char[strlen(rhs、m_data) + 1];

  strcpy(m_data,rhs、m_data);

  return *this ;

  }

  String::~String()

  {

  delete []m_data ;

  }

  13、 、h头文件中的ifndef/define/endif 的作用?

  答:防止该头文件被重复引用。

  14、 #i nclude 与 #i nclude “file、h”的区别?

  答:前者是从Standard Library的路径寻找和引用file、h,而后者是从当前工作路径搜寻并引用file、h。

【C/C++面试试题】相关文章:

c++个人实习心得体会范文01-11

社工面试面试试题及答案08-04

乐事面试题11-05

硅谷面试题精选02-03

金山的面试题目04-13

SOA专业面试试题02-07

那些最经典的面试题08-20

面试试题设计原则08-18

护士面试的面试试题及参考答案07-03

德国公司经典面试题11-10