C 基礎知識(5)

2021-10-11 22:17:47 字數 3909 閱讀 7916

列舉:是一種資料型別,列舉適用於取值範圍有限的資料

[訪問許可權修飾符]

enum 列舉名

列舉的訪問許可權修飾符與類一致,修飾符可寫可不寫。類的預設值為interal,列舉的預設值也是interal。

列舉名遵循大駝峰命名法。

列舉一般和switch-case結合使用。eg:

public

enum season

class

program

}}

1.雖然列舉中的元素的值可以相同,但是強烈不推薦這樣使用。

2.列舉元素預設的值型別是int型,可以修改為其他的整型。

//列舉

//列舉中使用冒號表示這個列舉中元素的資料型別為冒號後的型別(且只能為整型)

public

enum season:

long

class

program

}

語法:結構體和類基本上是一樣的

[訪問許可權修飾符] struct 結構體名字
1.都包含字段,屬性和方法。訪問許可權都一樣。

2.都是通過關鍵字new例項化物件的

1.結構體物件在棧上開闢的空間,因此結構體是值型別,不是引用型別;而類物件在堆上開闢空間,因此類是引用型別

2.構造方法:

​ a.結構體中不允許寫無參構造。

​ b.而在結構體的有參構造中,必須要給所有的字段進行賦值

​ c.結構體中始終包含乙個public許可權的無參的構造方法。

3.結構體中不允許寫析構方法,只有類才可以。

4.結構體只有乙個父類叫做object,不能被其他的結構體或者類繼承,也不能繼承自其他的結構體或者類

//寫乙個結構體

public

struct point

get}

//有參構造

public

point

(double x,

double y)

//靜態構造(和在類中觸發靜態構造的時機一致)

static

point()

//方法

public

void

test()

}public

class

program

public

static

void

change

(point p)

}

由static修飾的類就是靜態類

​ 1.靜態類不能例項化物件

​ 2.靜態類中不允許寫非靜態的成員

​ 3.靜態類只能由乙個父類,叫object

用途:用來設計工具類

//靜態類

public

static

class

arrays

}class

program

}

1.用來修飾類,叫做密封類,被sealed修飾的類不能被繼承

//密封類

sealed

class

animal

//aniaml類被密封,dog類不能繼承

class

dog:

animal

2.用來修飾方法,叫做密封方法,被sealed修飾的方法不能被繼續重寫,且只有override方法可以被密封

class

man:

user

}class

superman

:man

}

命名空間是乙個虛擬的集合。命名空間中的元素只能是類、結構體、列舉、介面等型別。

命名空間可以防止類名的重複,以及更好的管理類

1.例項化乙個物件

using space0;

//表示引用space0的命名空間

namespace space0

}namespace space1

class

bclass

program

}}

2.命名空間可以重複
using space0;

//表示引用space0的命名空間

using system;

namespace space0

}//命名空間的名稱是允許重複的

//如果用多個命名空間的名字是一樣的,那麼他們是乙個命名空間

namespace space0

//報錯的原因是上面已經有了space0命名空間,兩個空間相同

}

3.命名空間可以互相巢狀
using space2;

//表示引用space2的命名空間

using space2.space2;

//表示引用space.space2的命名空間

using system;

//命名空間可以巢狀命名空間

namespace space2

//這個命名空間的名字叫做space2.space2

namespace space2

namespace space2

}}}namespace space1

}}

使用關鍵字(operator)進行運算子過載。通過特定的語法,使某些運算子可以具備特殊的功能。

√ 算術運算子(練習:過載++運算子,觀察放在變數前後有沒有區別)

× 賦值運算子不能被過載

√ 關係運算子:如果想重寫關係運算子,那麼必須成對過載(如果過載》,必須過載<=;如果過載》,必須過載<=;如果過載==,必須過載!=;)

√ 邏輯運算子中 & | ! ^可以被過載。× 邏輯運算子中&& ||不能被過載

√ 位運算子中 & | ! ^ ~ 可以被過載

1.引數的數量一定要和運算子能夠操作的數量進行匹配

2.引數型別和返回值型別可以隨意設定,但要合情合理

public

struct point

//運算子過載(poerator),使+加號具有新的功能

//可以實現兩個point物件直接相加,得到乙個新的點

//規定必須寫public和static

public

static

point

operator+(

point p1,

point p2)

//public

static

point

operator-(

point p1)

public

static

point

operator*(

point p1,

point p2)

public

static

point

operator+(

point p1,

int a)

public

static

double

operator&(

point p1,

int a)

}public

class

program

}

C 基礎知識5

1 有參的父類建構函式 class student protected person 初始化列表 只能加在定義當中,不能寫在宣告當中 有子物件的派生類建構函式 先構造父類,再構造子物件,再構造自己。初始化列表的順序沒有關係 組合關係 聚合關係 生命週期沒有必然聯絡 部分和整體的關係 緊密 繼承關係 ...

c 基礎知識5 內聯函式

內聯函式 解釋 程式在編譯時,會將內聯函式嵌入到呼叫處,適用於功能簡單 規模較小 使用頻繁的函式。格式 inline 函式體 優點 沒有普通函式呼叫的壓棧 跳轉 返回等操作,提高執行效率 缺點 增加 量,消耗記憶體空間。使用限制 為了防止編譯器過於老舊,出現不能內聯的現象,建議對內聯函式進行如下限制...

C 基礎知識

抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...