3 C 語言知識點總結

2021-08-29 09:58:06 字數 3381 閱讀 1676

1.封裝:將記錄包起來讓其自己去幹。

2.抽象:記錄一下這些傢伙的屬性,比如都是人。

3.繼承:生下來的兒子跟父親乙個鳥樣。

4.多型:兒子除了含有父親的內容外,還有自己的特徵。

5.標頭檔案中不加「.h」。

6.加上命名空間 using namespace std; //後期考慮到c++主要用在大型程式設計,可以不加,但是一些呼叫的型別要用std::xxoo的形式。

7.cin>>i;輸入(面板輸入到i)   coutcin.get()用來從指定的輸入流中提取乙個字元(包括空白字元);

#include

using namespace std;

int main()

if(cin.peek()=='\n')

}cout<8.ungetc(ch,stdin);//將變數ch中存放的字元退回給stdin輸入流(其中ch=getchar();面板輸入的字元被ch賦予,為了使其重新回到面板中可以使用該句)

9.建構函式:物件可以使用的函式。比如:in.open()

10.可以加std::cin.ignore(100,『\n』);std::cin.get();//暫停結束,直到任意輸入一字元再結束(這裡的ignore()表示忽略100個字元,除非是\n就不忽略)

11.函式過載:將函式的作用重新定義

12.區域性變數需要初始化為0

13.在string str;時,由於cin>>str會由於遇到空格便結束,所以要改為getline(cin,str);//表示用cin的方式輸入一串東西給str

14."&"表示獲得變數的位址

15.用『 』括起來的表示為單個字元

16.int *p1=&myint,這裡表示的指標是存位址

*p1=233;這裡表示的是解引用,給位址在p1中的記憶體位置賦值233

17.如果函式形式為swap(int *p,int*q),傳入的引數應該為位址swap(&p,&q)

形式為swap(int &p,int &q)時,直接傳入引數就行,即為swap(p,q)

18.用typedef來為乙個型別定義建立乙個別名:typedef int* intpointer,意思就是說,intpointer=int*

19.類 class myfirstclass

};//要求類名的第乙個字母採用大寫,同時在類宣告末尾必須有乙個分號,類主要由裡面的變數還有函式組成

20.queue(模板類)佇列:需要元素型別

eg:queueq1;//表示q1是乙個佇列

queue的基本操作:

入隊:q.push(x);將x接到佇列的末端

出隊:q.pop();彈出佇列的第乙個元素,並不會返回其值

訪問隊首元素:q.front();即最早被壓入佇列的元素

訪問隊尾元素:q.back();即最後被壓入佇列的元素

判斷佇列空:q.empty();當佇列空時,返回true

訪問佇列中元素的個數:q.size();

21.構造器

class car

car(void);//建構函式名字與類名一樣

car::car(void)//定義建構函式內容

22.析構器

class car

car(void);

~car();//析構函式,避免記憶體洩漏,可在析構函式中加內容    car::~car()

23.繼承:

class animal

public:

std::string mouth;

void eat();

class pig:public animal

void sleep();

};//繼承父類的所有內容,並可以擁有自己的內容

void animal::eat()

}//對函式內容進行填充

24. public:允許任何**訪問

protected:允許這個類本身還有它的子類訪問

private:允許這個類本身訪問

25.在類裡面加 friend class xxoo,表示另乙個類xxoo可以呼叫這個類裡面的東西

26.直接建立乙個指標並讓它指向新分配的記憶體塊

int *pointer=new int;

*pointer=110;//將記憶體塊存進去內容

std::cout<<*pointer;

delete pointer;//要求每乙個new都是需要乙個delete,避免占用太多死記憶體,導致記憶體洩漏

27.在基類中宣告函式為虛函式(在函式前加virtual),這樣在子類中對函式進行過載後,在後期呼叫時,即使用基類型別定義子       類的建構函式如:

parent *child=new child("xxoo");//建構函式為child,開闢了乙個新記憶體空間放著建構函式,並向建構函式中輸         入引數,但是由於是定義的指標型別是基類的,所以預設的記憶體塊中的同名函式引用的是父類的,沒辦法體現出函式的重             載,所以在基類中將後期要過載的函式變為虛函式,這樣就能使得成功呼叫過載函式

29.基類中的析構函式應該寫為虛函式,是為了子類中的析構函式能被正確呼叫,然後再呼叫基類中的析構函式,析構函式都是         在main()中所有**執行結束後再呼叫的。

30.在進行多繼承時,為了防止子類的兩個基類中都含有相同的屬性(此時兩個基類可能是從同乙個基類中繼承而來得的),在         原基類繼承更高階的基類中應該使用虛繼承:

class teacher:virtual public preson

class student:virtual public person

class teachstudent:public teacher,public student

};//可以避免該類中含有兩份person內的屬性

賦值方式為:x[1]=...;x[2]=...;

delete x;//刪除開闢出來的陣列空間

32.模板定義:

template//模板定義某種模糊型別為t

void swap(t &a,t&b)//模糊型別引用

t temp=a;

a=b;

b=temp;

int main()

int i1=100;

int i2=200;

swap(i1,i2);

std::string s1="jjj";

std::string s2="rrr";

swap(s1,s2);

return 0;

33.模板定義後的類進行初始化

template

class myclass

myclass();//建構函式

void swap(t &a,t &b);//模糊型別引用的成員函式

myclass::myclass()

}//類模板定義後的建構函式初始化需要加

3 C 知識點 is和as

is和as 都是用於型別轉換的操作。但是這兩個有什麼區別呢?簡單的來說 is 判斷成立則返回true,反之返回false。as 成立則返回要轉換的物件,不成立則返回null。下面掏一手 來說明一下。using system using system.collections.generic using...

C語言知識點 3

1.指標與陣列 用陣列指標遍歷陣列每個元素,指標當作陣列來用,int ages 5 int p p ages p ages 0 p 0 p 2 ages 2 p 2 指標變數的p 1究竟加多少,取決於指標的型別,另外指標指向的是陣列的首元素,並不是指向陣列,這也和指標型別有關,指標是int型別,只能...

C語言知識點總結

有段事件沒有寫c程式了,有些地方有些生疏了。這兩天事情比較少,準備再系統的看一邊c的基礎知識。這裡再總結一下平時沒太注意的知識要點。1 c語言的語句塊在c語言中,任何允許出現語句的地方既可以是由 號結尾的一條語句,也可以是由 括起來的若干條語句或宣告組成的語句塊 statement block 語句...