C/C++ 面试题基础知识
C/C++ 中struct的區(qū)別
C中的struct是沒有權(quán)限設(shè)置的。?
C++中struct增加了訪問權(quán)限,且可以和類一樣有成員函數(shù)。?
C++中的struct等同于class,只是class默認(rèn)成員權(quán)限是private,而struct默認(rèn)成員權(quán)限是public。且class的默認(rèn)繼承為私有繼承,struct的默認(rèn)繼承為公有繼承。
C++中引用和指針有什么不同?指針加上什么限制等于引用?
引用不是一個(gè)變量,它只表示該引用名是目標(biāo)變量名的一個(gè)別名,它本身不是一種數(shù)據(jù)類型,因此引用本身不占存儲單元,系統(tǒng)也不給引用分配存儲單元。引用一經(jīng)確定就不能修改。
指針是一個(gè)變量,需要在內(nèi)存中分配空間,此空間中存儲所指對象的地址。由于指針是一個(gè)普通變量,所以其值還可以通過重新賦值來改變。
把指針定義為const后,其值就不能改變了,功能和引用類似,但有本質(zhì)的區(qū)別。
繼承與多態(tài)
?覆蓋(override)是指子類重新定義父類的虛函數(shù)的做法。
?重載(overload)是指允許存在多個(gè)同名函數(shù),而這些函數(shù)的參數(shù)表不同。他們的地址在編譯期就綁定了(早綁定),重載與多態(tài)無關(guān)。
?繼承的作用是代碼重用。多態(tài)為了實(shí)現(xiàn)接口重用
虛函數(shù)
?一個(gè)類存在虛函數(shù),那么編譯器就會為這個(gè)類生成一個(gè)虛表,在虛表里存放的是這個(gè)類所有虛函數(shù)的地址。
當(dāng)生成類對象的時(shí)候,編譯器會自動的將類對象的前四個(gè)字節(jié)設(shè)置為虛表的地址,而這四個(gè)字節(jié)就可以看作是一個(gè)指向虛表的指針。
虛表里依次存放的是虛函數(shù)的地址,每個(gè)虛函數(shù)的地址占4個(gè)字節(jié)。
?
struct 的大小
struct A
{
A(){}
~A(){}
int m1;
int m2;
};
struct B
{
B(){}
~B(){}
int m1;
char m2;
static int m3;
};
struct C
{
C(){}
virtual ~C(){}
int m1;
short m2;
};
8 8 12
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xubin0523/archive/2012/05/09/2491960.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的C/C++ 面试题基础知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内功重修之数据结构----数组
- 下一篇: C#泛型-泛型集合DictionaryK