-
內(nèi)存管理
資源獲得初始化原則(RAII)
構(gòu)造函數(shù) 創(chuàng)建資源
析構(gòu)函數(shù) 銷(xiāo)毀資源
查看全部 -
+
virtual int work(); 虛函數(shù) 該staff 類(lèi)里也可實(shí)現(xiàn)
virtual int? work()=0;純虛函數(shù),只聲明,不實(shí)現(xiàn)。
虛函數(shù)不能實(shí)例化對(duì)象。
純虛函數(shù)的類(lèi)只能被繼承,不能被實(shí)例化
查看全部 -
對(duì)象分配到堆上,new 用來(lái)分配對(duì)象,delete 用來(lái)刪除對(duì)象。new 會(huì)返回一個(gè)指針,在使用完畢后,要通過(guò) delete 把這個(gè)指針指向的地址釋放掉。
??Staff?*?st1?=?new?Staff(); ??//?記得釋放 ??delete?st1;
棧上實(shí)例化:
??Staff?st1;
查看全部 -
函數(shù)指針funcp指向函數(shù)funcl;
int?(*funcP)(int?a)=funcl;
int 函數(shù)返回值類(lèi)型
funcP?指針名
int a?函數(shù)輸入值
funcl? 指針指向的函數(shù)
int?ret=(*funcP)(5);
通過(guò)指針調(diào)用函數(shù),將返回值賦給ret
?
查看全部 -
#include?<stdio.h> int?main(int?argc,char?**argv) { ????int?arr[]?=?{1,?2,?3,?4}; ????int?*?p?=?arr; ????return?0; }
*(p+2)
等價(jià)于
arr[2]
查看全部 -
普通變量用點(diǎn),指針用箭頭
查看全部 -
現(xiàn)在大部分的機(jī)器,都采用了小端字節(jié)序。但是在 IO 方面,則大部分使用大端字節(jié)序。例如,你要使用網(wǎng)絡(luò)發(fā)送一個(gè) int 類(lèi)型的變量,要先把 int 轉(zhuǎn)換成大端字節(jié)序,然后通過(guò)網(wǎng)絡(luò)發(fā)送。
大端字節(jié)序又被稱(chēng)之為網(wǎng)絡(luò)細(xì)節(jié)序。
查看全部 -
面向?qū)ο?
各司其職
解耦合思想
結(jié)合大象進(jìn)冰箱的例子
以及函數(shù)指針的使用(產(chǎn)品經(jīng)理提需求,合作開(kāi)發(fā))查看全部 -
要通過(guò)基類(lèi)(父類(lèi))釋放子類(lèi)的對(duì)象,必須將父類(lèi)的析構(gòu)函數(shù)設(shè)置為virtual.
查看全部 -
static int a
定義靜態(tài)變量
查看全部 -
memcpy用來(lái)做內(nèi)存拷貝,你可以拿它拷貝任何數(shù)據(jù)類(lèi)型的對(duì)象,可以指定拷貝的數(shù)據(jù)長(zhǎng)度;
例:
char a[100], b[50];
memcpy(b, a,sizeof(b)); //注意如用sizeof(a),會(huì)造成b的內(nèi)存地址溢出。
strcpy就只能拷貝字符串了,它遇到'\0'就結(jié)束拷貝;例:
char a[100], b[50];
strcpy(a,b);
查看全部 -
將父類(lèi)的析構(gòu)函數(shù)聲明為虛函數(shù),作用是用父類(lèi)的指針刪除一個(gè)派生類(lèi)對(duì)象時(shí),派生類(lèi)對(duì)象的析構(gòu)函數(shù)會(huì)被調(diào)用。例如:
class Staff
{
public:
? ?std::string name;
? ?int age;
? ?virtual ~Staff()
? ?{
? ?}
}
class Coder : public Staff
{
public:
? ?std::string language;
? ?virtual ~Coder()
? ?{
? ?}
};
int main(int argc,char **argv)
{
? ?Staff * s = new Coder();
? ?delete s;
? ?return 0;
}此時(shí)如果析構(gòu)函數(shù)不加 virtual,那么 delete 父類(lèi)指針的時(shí)候,子類(lèi)的析構(gòu)就不會(huì)被調(diào)用,某些情況下會(huì)導(dǎo)致內(nèi)存泄漏。
查看全部 -
將父類(lèi)的析構(gòu)函數(shù)聲明為虛函數(shù),作用是用父類(lèi)的指針刪除一個(gè)派生類(lèi)對(duì)象時(shí),派生類(lèi)對(duì)象的析構(gòu)函數(shù)會(huì)被調(diào)用。例如:
class Staff
{
public:
? ?std::string name;
? ?int age;
? ?virtual ~Staff()
? ?{
? ?}
}
class Coder : public Staff
{
public:
? ?std::string language;
? ?virtual ~Coder()
? ?{
? ?}
};
int main(int argc,char **argv)
{
? ?Staff * s = new Coder();
? ?delete s;
? ?return 0;
}此時(shí)如果析構(gòu)函數(shù)不加 virtual,那么 delete 父類(lèi)指針的時(shí)候,子類(lèi)的析構(gòu)就不會(huì)被調(diào)用,某些情況下會(huì)導(dǎo)致內(nèi)存泄漏。
查看全部 -
比較特殊的是,數(shù)組名就是一個(gè)指針,不過(guò)數(shù)組名是一個(gè)常量指針,不能做累加或者累減操作。
我們可以通過(guò)指針來(lái)訪(fǎng)問(wèn)數(shù)組元素:
*(p + 2)
同樣,這句話(huà)等價(jià)于:
p[2]
查看全部 -
浮點(diǎn)數(shù)結(jié)構(gòu)復(fù)雜,運(yùn)算速度慢
查看全部
舉報(bào)