- 相关推荐
C/C++面试试题
1、C语言里的STRUCT与C++里的CLASS有何区别?
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