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