C++學習(50)
1. 程式開發過程:編輯、編譯預處理、編譯、連線、執行。
2. 比較 #include“file.h”VS. #include<file.h>
當用#include“file.h”時,先搜尋當前工作目錄,如果沒有,再去搜尋標準庫,庫沒有再搜尋資源庫;
當用#include<file.h>時,編譯器先從標準庫開始搜尋,如果沒再搜尋資源庫目錄,若還未找到則搜尋當前工作目錄。
題中的兩種方式都會找到stdio.h(存在於標準庫),通過<>,(庫裡)一步就找到了。
兩者在程式的執行速度上一樣,但是在編譯速度上不同。
3. 友元能夠通過類的物件訪問類的所有成員。(正確)
(友元相當於在一個盒子上開了一個洞,既然一個盒子有洞,那麼你就可以拿出這個箱子的任何東西。)
4. C++的虛擬函式必須是類的一個成員,而不允許是類的友元。
5. 呼叫拷貝建構函式的3情況:
1)、用一個物件去初始化同一個類的另一個新物件時;
2)、函式的形參物件,呼叫函式進行形參和實參結合;
3)、函式的返回值是類的物件,函式執行返回撥用時 將一個物件賦值給另一個物件,兩個物件都存在,呼叫的是賦值建構函式,不涉及記憶體的分配。 當被賦值的物件不存在呼叫的是拷貝建構函式;
6. 分析下列程式,則建構函式中,成員變數一定要通過初始化列表初始化的是:bc
class A{
...
private:
int &a;
};
class B:public A{
...
private:
int a;
public:
const int b;
A c;
static const char *d;
A* e;
};
分析一:需要初始化列表的三種:引用、const和沒有預設建構函式的成員物件。
c需要初始化不是因為它的成員有引用,而是因為類A中沒有合適的建構函式。
d,底層const,允許改變d的值,亦可不必初始化。
e,指向的東西是可變的,只要滿足類A中要求即可。指標與引用的區別,定義一個引用時候必須要初始化,而且不能改變。定義一個指標時候,不用初始化,還可以更改指向。
const、引用在初始化列表中初始化。static在類外初始化。 普通變數可以在初始化列表也可以在建構函式裡面賦值
分析二:常量成員和引用成員自然是要初始化的,問題就在這static成員。 static成員是不允許在類內初始化的,除了const,那麼static const 成員是不是在初始化列表中呢? 答案是NO
一是static屬於類,它在未例項化的時候就已經存在了,而建構函式的初始化列表,只有在例項化的時候才執行。
二是static成員不屬於物件。我們在呼叫建構函式自然是建立物件,一個跟物件沒直接關係的成員要它做什麼呢。
還有一個問題就是上面那個仁兄說的,需要初始化的資料成員是物件(繼承時呼叫基類建構函式) ;這個顯然是不對的。下面程式碼能夠很好說明了這個問題。c需要初始化不是因為它是類物件,是因為他的成員有引用。
class A { private: int a; };
class B : public A{
private:
int aa;
public: B(int i ):aa(i),b(9){};
const int b;
A c;
};
相關文章
- 50條大牛C++程式設計開發學習建議C++程式設計
- C++程式設計學習50個經典網站 強力推薦C++程式設計網站
- 學習C++C++
- c++學習C++
- 第50天學習打卡(JavaScript)JavaScript
- 學習必備日語五十音學習50音起源
- kingofark關於學習C++和程式設計的50個觀點 (轉)GoC++程式設計
- 如何學習C++?C++
- C++ 自我學習C++
- C++學習四C++
- C++學習五C++
- C++學習(49)C++
- C++學習(46)C++
- C++學習(47)C++
- C++學習(48)C++
- C++學習安排C++
- c/c++ 學習C++
- C++ Prime 學習C++
- Qt學習之路(50): QString薦QT
- C++學習步驟(C++該如何學)C++
- c++學習總結C++
- c++學習記錄C++
- C++學習篇(2)C++
- C++ STL學習——vectorC++
- C++學習筆記C++筆記
- C++ Builder 學習1C++UI
- C/C++學習路線———學習筆記C++筆記
- C++學習筆記——C++ 繼承C++筆記繼承
- C++、C++學習之我見 (轉)C++
- 50音起源 for mac日語五十音學習工具Mac
- 50個學習新技能的最佳網站網站
- NC50學習手記(1)——建賬
- 公司C++規範學習C++
- C\C++白嫖學習C++
- C++學習記錄1C++
- C++學習路線圖C++
- c++學習進階之路
- C++ STL學習之stack。C++