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 ...