面試相關

筆記積累    ——————————2018年11月8日————————

1、成員變量初始化問題:(https://blog.csdn.net/no_sying_nothing/article/details/51958547  )

總結:

1.成員變量在使用初始化列表初始化時,與構造函數中初始化成員列表的順序無關,只與定義成員變量的順序有關。

2.如果不使用初始化列表初始化,在構造函數內初始化時,此時與成員變量在構造函數中的位置有關。

3.類中const成員常量必須在構造函數初始化列表中初始化。

4.類中static成員變量,只能在類內外初始化(同一類的所有實例共享靜態成員變量)。
 

2、如果寫的函數需要傳入一個指針,是否需要爲該指針加上一個const,把const加在指針的不同位置是否有區別?

答:const是來聲明一個常量,當不想讓值修改時就用const.

(指針前需要加入一個const,const的作用是防止指針在函數體內被意外修改)

當const修飾指針時:

     int b=100;

     const int*a=&b;    [1]

     int const *a=&b;   [2]

     int* const a=&b;   [3 ]

     const  int* const  a=&b;  [4]

如果const位於星號的左側,則const就是用來修飾指針所指向的變量,即指針指向爲常量;因此,[1]和[2]的情況相同,都是指針所指向的內容爲常量(const放在變量聲明符的位置無關),這種情況下不允許對內容進行更改操作,如不能*a=3;

如果const位於星號的右側,const就是修飾指針本身,即指針本身是常量,[3]爲指針本身是常量,而指針所指向的內容不是常量,。這種情況下不能對指針本身更改操作,如a++是錯誤的;

[4]爲指針本身和指向的內容均爲常量。

拓展問題:如果寫的函數需要傳入的參數是一個複雜類型的實例,面試官可能會問傳入值參數或者引用參數有什麼區別,什麼時候需要爲傳入的引用參數加上const?

答案:https://blog.csdn.net/bianlongpeng/article/details/77199272

對於非內部數據類型的輸入參數,應該將“值傳遞”改爲“const”引用,目的是提高效率,如將void Func(A a)改爲void Fun(const A &a).

第二,對於內部數據類型的輸入參數,不需要將“值傳遞”方式改爲“const引用傳遞”,否則可能降低了函數的可理解性,如void func(int x) 不應該改爲void Func(const int&x)

返回值問題 參加以上博客

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章