今日c 知識點總結

2021-08-07 03:06:20 字數 1729 閱讀 9830

1.      const char *p和char * constp有什麼區別?

const char *p:表示的是指標指向的內容不能修改;//(*p)++是不可以的;

char * const p:表示的是指標指向的內容可以修改,p本身的內容(指的是位址)不可修改;//比如一開始初始化的時候p = &a;但是現在p = &b;這樣是不對的

2.      有參巨集有什麼bug?應該怎麼避免這些bug ?

(1):有參巨集只是簡單的替換,替換後可能會出現優先順序上的錯誤;通過將巨集的引數用括號括起來,可以修復這個bug;

(2):舉個例子來說明

#define add(a,b)    (a)+(a)+(b)

int nnum = 0;

add(++nnum,nnum++);

++nnum + ++nnum +nnum++;

如巨集的引數使用自增或者自減運算子時,就會出現問題;可以使用內聯函式來解決此問題;

new和delete:用於元素的申請

new和delete用於陣列的申請;

例如:#include

#include

#include

using

std::cout

;using

std::endl

;int

main

()main.cpp

#include

"head.h"

intmain()

main.cpp

#include

"head.h"

namespace

mynamespace

};//using mynamespace;

有了這句話,下面的

mynamespace::fun();中的mynamespace::部分就可以不用寫了,不過此時在本題中會報錯,因為又出現了上面的錯誤

intmain()

{fun();

mynamespace::fun();

7.物件導向程式設計的三大特點:封裝,繼承和多型

8.c++如何通過語法來實現封裝性?

首先解釋一下為什麼需要封裝,平常我們在寫程式的時候,可能會遇到這樣的bug ,就是說乙個資料被某個函式所修改了,發生了錯誤,但是在這個程式裡面有很多函式去修改它,這時候你不得不乙個函式乙個函式去排查,這樣比較麻煩,有了封裝性以後,可以通過設定訪問許可權(把資料設為私有的),這樣的話,你非要想修改這個資料,只能通過成員函式;即使出現邏輯上的錯誤,只要檢視修改此成員函式即可。

三大訪問控制符:

public: 公有成員,在類的外面也可以訪問

protected:保護成員,類內可以訪問,類外不能訪問,(在子類中可以訪問)

private:私有成員,類內可以訪問,類外不能訪問,(在子類中可以訪問)。

9.this 指標是指什麼?

指的是乙個物件的記憶體首位址

this指標指向正在呼叫的這個成員函式的物件,如果沒有.this 指標,就不知道是哪個物件呼叫了類裡面的資料

10.有關引用的一些小問題

引用的一些性質:

不占用記憶體空間(它的記憶體空間和被引用的變數大額記憶體是同一塊記憶體)

必須初始化;(一般在初始化變數時,初始值會被考慮到新建的物件中;然而定義引用時,程式把引用和它的初始值**在一起,而不是將初始值直接拷貝給引用。一旦初始化完成,引用和它的初始值物件一直**在一起。因為無法令引用重新**到另乙個物件,因此引用必須初始化。)

初始化之後不能被修改

今日webAPI知識點總結

onmouseup 滑鼠按鍵放開時觸發 onmousedown 滑鼠按鍵按下觸發 onmousemove 滑鼠移動觸發 onkeyup 鍵盤按鍵按下觸發 onkeydown 鍵盤按鍵抬起觸發 setinterval 引數1,引數2 引數1 要執行的函式.引數2 時間,單位毫秒,設定定時器多少毫秒觸發...

今日webAPI知識點總結

offsetleft 獲取的是相對于父物件的左邊距 left 獲取或設定相對於 具有定位屬性 position定義為relative 的父物件 的左邊距 如果父div的position定義為relative,子div的position定義為absolute,那麼子div的style.left的值是相...

今日知識點

1 名字必須在使用之前進行定義。而且,一旦乙個名字被用作型別名,該名字就不能被重複定義 例子 typedef double money class account uses global definition of money private error cannot change meaning ...