東南大學第5章c++程式結構
本章重點注意const
static兩個關鍵字,也是企業面試中常見的面試題
(一)作用域
作用域:識別符號的可見範圍;
可見性:識別符號是否可以引用的問題。
1,函式原型作用域
函式原型裡的形參
2,塊作用域
塊中的識別符號作用域在花括號之間
3,類作用域
類x的乙個成員m,在x的任何乙個沒有重新宣告變數m的函式成員中都可以
訪問到m。
4,檔案作用域
開始於宣告點,結束於檔案尾
記憶體中的程式
------------|
**區
|------------|
全域性資料區 |全域性變數
------------|
堆區 |先諮詢後分配
------------|
棧區 |函式區域性變數
------------|
可見性:從內向外看,如果看見則引用。
外有內無某一識別符號,則在內可見
外有內也有,則內只見內。
(二)物件的生存期
1,靜態生存期 與程式的執行期相同
檔案作用域
函式內部 冠以static 靜態區域性變數
2,動態生存區 開始於宣告點,結束與作用域結束處
典型例題
void main()
void fun()
int fun2()
???(2)全域性變數: 在所有函式的外部,在程式的每個函式都可見
存放的在全域性資料區,不初始化則為0
實現變數的共享,每個函式都可以訪問(不提倡)。
(3)資料成員:
在類中的資料成員,類內共享,類外有許可權
(四)靜態成員
1,靜態資料成員
不用全域性物件,使用類中的靜態資料成員
static宣告
所有物件維護該成員的同一拷貝,自由乙個空間
統計物件個數
class point;
point(point &p);
};point::point(point &p)
int point::countp=0; //在檔案作用域某地使用類名限定進行定義性說明。
//***分配空間
原始碼見文末
2,靜態成員函式 解決操作合法性控制問題
作用域操作符 ::
注意:*靜態成員屬於類,非靜態成員屬於物件
*只能引用屬於該類的靜態資料成員或靜態成員函式
*不能直接引用類中的非靜態成員,通過物件a.x來訪問
class point;}
int main()
在基類的派生類中,可以直接訪問繼承而來的protected成員,但是不能訪問private限制的成員.
(五)友元
friend
提供破壞資料封裝和資料隱藏機制。
將乙個模板宣告為另乙個模板的友元。
1,普通函式
class point;
double fdist(point &a,point &b)
2,友元成員函式
乙個類的成員函式可以說明為另乙個類的友元函式
class student; //預宣告
class teacher;
class student;
3,友元類
class a;
class b;
友元是單向的。
不能傳遞。
(六)共享資料的保護
常型別:必須初始化,而且不能被更新。
1,常引用做形參
int main()
void display(const double &r)
2.常物件
class a;
a const a(3,4);
3,常成員函式
不更新物件的資料成員
常物件只能呼叫他的常成員函式,實現過載。
class r;
int main()
4,常資料成員
class a;
const int a::b=10;
//不可變
a::a(int i):a(i),r(a){}; //*****編譯的時候就賦值了
void main()
{}常陣列,常指標。
(七)編譯預處理命令
1,include 尖括號
按標準方式
先在當前目錄搜尋,後標準方式
#define
#if #endif
#ifdef #endif
例:#ifndef head_h
#define head_h
class point
{}#endif
...大型的程式有助於多人開發
(八)多檔案結構和工程
多檔案結構
類宣告 file.h
類實現 file.xpp
類使用 main所在的file.cpp
使用vc++建立乙個多檔案工程
#include iostream.h
class point;
point(point &p);
int getc()
};point::point(point &p)
int point::countp=0; //在檔案作用域某地使用類名限定進行定義性說明。
//***分配空間
void main()
{ point p(3);
point q(p);
cout<
C 程式結構
c 中的組織結構的關鍵概念是程式 program 命名空間 namespace 型別 type 成員 member 和程式集 assembly 命名空間 型別 成員 類 class 資料成員 字段 函式成員 方法,屬性,索引器,事件,運算子,構造 析構函式 介面 inte ce 函式成員 附經典理解...
c程式結構
在我們學習 c 語言的基本構建塊之前,讓我們先來看看乙個最小的 c 程式結構,在接下來的章節中可以以此作為參考。c 程式主要包括以下部分 讓我們看一段簡單的 可以輸出單詞 hello world include int main 接下來我們講解一下上面這段程式 程式的第一行 include 是預處理...
C 程式結構
在我們學習 c 語言的基本構建塊之前,讓我們先來看看乙個最小的 c 程式結構,在接下來的章節中可以以此作為參考。c 程式主要包括以下部分 讓我們看一段簡單的 可以輸出單詞 hello world include int main 接下來我們講解一下上面這段程式 程式的第一行 include 是預處理...