- 相關推薦
C/C++面試試題
1、C語言里的STRUCT與C++里的CLASS有何區(qū)別?
2、面向對象有哪些特性?
3、何時會用到多態(tài)?如何實現(xiàn)多態(tài)?
4、怎樣實現(xiàn)虛函數(shù)?
5、子類覆蓋了基類的方分法時,子類如何調用基類的方法?
6、MFC和SDK是什么關系?
7、什么是HDC?什么是CWnd?
8、如果讓你設計一個異形的按鈕,你將如何實現(xiàn)?談一下你的思路!
談一下你做的項目用到了哪些技術,在這個項目的實現(xiàn)過程中你遇到了哪些問題,到最后你是怎么樣解決這些問題?從這個項目中你學會了什么?
9、 結構與聯(lián)合有和區(qū)別?
1、 結構和聯(lián)合都是由多個不同的數(shù)據類型成員組成, 但在任何同一時刻, 聯(lián)合中只存放了一個被選中的成員(所有成員共用一塊地址空間), 而結構的所有成員都存在(不同成員的存放地址不同)。
2、 對于聯(lián)合的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對于結構的不同成員賦值是互不影響的。
10、 下面關于“聯(lián)合”的題目的輸出?
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{ /*定義一個聯(lián)合*/
int i;
struct{ /*在聯(lián)合中定義一個結構*/
char first;
char second;
}half;
}number;
number、i=0×4241; /*聯(lián)合成員賦值*/
printf(“%c%c\n”, number、half、first, mumber、half、second);
number、half、first=’a'; /*聯(lián)合中結構成員賦值*/
number、half、second=’b';
printf(“%x\n”, number、i);
getch();
}
答案: AB (0×41對應’A',是低位;Ox42對應’B',是高位)
6261 (number、i和number、half共用一塊地址空間)
11、 已知strcpy的函數(shù)原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不調用C++/C 的字符串庫函數(shù),請編寫函數(shù) 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); // 通用構造函數(shù)
String(const String &another); // 拷貝構造函數(shù)
~ String(); // 析構函數(shù)
String & operater =(const String &rhs); // 賦值函數(shù)
private:
char *m_data; // 用于保存字符串
};
嘗試寫出類的成員函數(shù)實現(xiàn)。
答案:
String::String(const char *str)
{
if ( str == NULL ) //strlen在參數(shù)為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; //刪除原來的數(shù)據,新開一塊內存
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”的區(qū)別?
答:前者是從Standard Library的路徑尋找和引用file、h,而后者是從當前工作路徑搜尋并引用file、h。
【C/C++面試試題】相關文章:
c++個人實習心得體會范文01-11
社工面試面試試題及答案08-04
樂事面試題11-05
硅谷面試題精選02-03
金山的面試題目04-13
SOA專業(yè)面試試題02-07
那些最經典的面試題08-20
面試試題設計原則08-18
護士面試的面試試題及參考答案07-03
德國公司經典面試題11-10