C/C++ 面试题基础知识
C/C++ 中struct的區別
C中的struct是沒有權限設置的。?
C++中struct增加了訪問權限,且可以和類一樣有成員函數。?
C++中的struct等同于class,只是class默認成員權限是private,而struct默認成員權限是public。且class的默認繼承為私有繼承,struct的默認繼承為公有繼承。
C++中引用和指針有什么不同?指針加上什么限制等于引用?
引用不是一個變量,它只表示該引用名是目標變量名的一個別名,它本身不是一種數據類型,因此引用本身不占存儲單元,系統也不給引用分配存儲單元。引用一經確定就不能修改。
指針是一個變量,需要在內存中分配空間,此空間中存儲所指對象的地址。由于指針是一個普通變量,所以其值還可以通過重新賦值來改變。
把指針定義為const后,其值就不能改變了,功能和引用類似,但有本質的區別。
繼承與多態
?覆蓋(override)是指子類重新定義父類的虛函數的做法。
?重載(overload)是指允許存在多個同名函數,而這些函數的參數表不同。他們的地址在編譯期就綁定了(早綁定),重載與多態無關。
?繼承的作用是代碼重用。多態為了實現接口重用
虛函數
?一個類存在虛函數,那么編譯器就會為這個類生成一個虛表,在虛表里存放的是這個類所有虛函數的地址。
當生成類對象的時候,編譯器會自動的將類對象的前四個字節設置為虛表的地址,而這四個字節就可以看作是一個指向虛表的指針。
虛表里依次存放的是虛函數的地址,每個虛函數的地址占4個字節。
?
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
?
?
轉載于:https://www.cnblogs.com/xubin0523/archive/2012/05/09/2491960.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的C/C++ 面试题基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内功重修之数据结构----数组
- 下一篇: 【Visual C++】游戏开发笔记二十