const作用
(1)可以定義const常量,具有不可變性。
(2)便於進行型別檢查。(而巨集不會進行型別檢查)。
(3)可以保護被修飾的東西,防止意外的修改。
(4) 可以節省空間。
static作用
1.隱藏:乙個檔案中的全域性變數在另外乙個檔案中使用extern宣告就能使用,宣告了static就不能了
乙個函式內的static變數具有全域性生命期,但只在這個函式中可見
2.記憶功能和全域性生存期
3.預設初始化為0
4.類的靜態成員函式是屬於整個類而非類的物件,所以它沒有this指標
5.不能將靜態成員函式定義為虛函式。
6.不可以同時用const和static修飾成員函式。
什麼函式不能宣告為虛函式
1:只有類的成員函式才能說明為虛函式;
2:靜態成員函式不能是虛函式;
3:內聯函式不能為虛函式;
4:建構函式不能是虛函式;
5:析構函式可以是虛函式,而且通常宣告為虛函式。
指標和引用的區別
而引用只是乙個別名,還是變數本身。對引用進行的任何操作就是對變數本身進行操作,因此以達到修改變數的目的。
1.引用必須被初始化,指標不必
2.引用初始化以後不能被改變,指標可以改變所指的物件。
3.不存在指向空值的引用,但是存在指向空值的指標。
4."sizeof引用"得到的是所指向的變數(物件)的大小,而"sizeof指標"得到的是指標本身的大小
封裝、繼承、多型
封裝:將客觀事物抽象成類,每個類對自身的資料和方法實行訪問控制
繼承:**復用,可以使得**模組化,擴充套件已存在的**
多型:乙個介面,多種方法,程式在執行時才決定呼叫的函式, 作用:介面重用
這個類的每乙個物件都會包含乙個虛指標,指向虛函式表,通過某個型別的指標訪問某個成員時,編譯器只是根據型別的定義查詢這個成員所在偏移量,用這個偏移量獲取成員
純虛函式(抽象類)
方法:virtual returntype function()=0;
該基類只做能被繼承,而不能被例項化
這個方法必須在派生類中被實現
結構體、聯合
#include "stdafx.h
"#include
using
namespace
std;
union u ;
#pragma pack(2)//
指定對齊位元組數
struct mystruct //
每個成員都有自己獨立的位址
;#pragma pack()//
恢復預設,一般是8
//位元組對齊數 按結構塔中最大成員的位元組數 和 設定數 取小值
//則按2位元組 對齊
intmain()
; printf(
"1.%c %x\n
", a.c, a.i);
a.c = 'b'
; printf(
"2.%c %x\n
", a.c, a.i);
a.i = 0x0143
; printf(
"3.%c 4.%d\n
", a.c, a.i);
//大端(儲存)模式,是指資料的低位儲存在記憶體的高位址中,而資料的高位儲存在記憶體的低位址中
//小端(儲存)模式,是指資料的低位儲存在記憶體的低位址中,而資料的高位儲存在記憶體的高位址中
int num = 1
;
char *p = (char*)#
if (*p == 1
) cout
<< "小端"
cout
<< "大端"
;
if (a.c == 1
) cout
<< "小端"
cout
<< "大端"
cout
<< sizeof(st) << endl; //
指定了#pragma pack(2)則為8, 沒有則12
return0;
}
記憶體管理
void getmemory1(char *p)
void test1()
//str一直是空,程式崩潰,p作為形參,是str的副本,申請了記憶體,但str並未改變
char *getmemory()
void test2()
可能是亂碼
p陣列為函式內的區域性變數,在函式返回後,記憶體已經被釋放
void getmemory(char **p, int num)
void test3()
列印hello,
未對malloc的記憶體進行釋放
getmemory中申請記憶體後應加上if ( *p == null ),以進行記憶體分配失敗的處理
void test4(void)
}可能會列印world,
free(str);之後未將str賦值為null,str為野指標
在c++中,記憶體分成5個區,他們分別是堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。
malloc與free是c++/c語言的標準庫函式,new/delete是c++的運算子。它們都可以用於申請動態記憶體和釋放記憶體。
對於非內部資料型別物件而言,光用malloc/free無法滿足動態物件的要求。
物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。
由於malloc/free是庫函式而不是運算子,不在編譯器控制許可權之內,不能夠把執行建構函式和析構函式的任務強加於malloc/free.
常見面試題目3
q 您在什麼情況下會用到虛方法?它與介面有什麼不同?q override與過載有什麼區別?q 值型別與引用型別有什麼區別?q 怎樣理解靜態變數?q 向伺服器傳送請求有幾種方式?q datareader與dataset有什麼區別?q 用.net做b s結構的系統,您是用幾層結構來開發,每一層之間的關係...
Spring常見面試題目
1.使用spring框架的好處是什麼?輕量 spring 是輕量的,基本的版本大約2mb。控制反 spring通過控制反轉實現了鬆散耦合,物件們給出它們的依賴,而不是建立或查詢依賴的物件們。面向切面的程式設計 aop spring支援面向切面的程式設計,並且把應用業務邏輯和系統服務分開。容器 spr...
C 常見面試題
1.c中static有什麼作用 1 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性,故使用static在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。2 static的第二個作用是保持變數內容的持久。儲存在靜態資料區的變數會在程式剛開始執行時就...