ctrl + r 運行
創(chuàng)新互聯(lián)主要從事網站設計制作、成都做網站、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務甘泉,十多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220F5 斷點調試,切換斷點
F10 進入下一行
F11 進入函數(shù)內部
shift + F11 跳出函數(shù)
Qtxml相關:DOM:提供一個接口來訪問和改變xml文件中的內容,xml就像是一個有層次的樹形視圖,可以方便的對xml進行增刪改查
SAX:基于事件的標準接口,適用于不需要對文檔進行操作,只需要讀取整個xml文檔
g_root = g_doc.documentElement(); 獲取全部的一級目錄
QDomNodeList currencyNodes = element.childNodes(); 獲取全部的二級目錄
QDomNodeList child = apiNodes.at(0).childNodes(); 獲取全部的三級目錄
XML:可擴展性標記語言
傳輸和存儲數(shù)據,不是展示數(shù)據。
xml標簽自定義,寫標簽名的要有含義。
標簽自定義
xml標簽區(qū)分大小寫,不可以交叉;
屬性就是表示標簽以外的額外信息,比較雞肋
xml和HTML的區(qū)別:
xml標簽成對出現(xiàn),HTML要求不嚴格
xml用于存儲和傳輸,HTML用于展示
xml標簽自定義,HTML不行
xml頭聲明:
C++筆記進階篇: 虛函數(shù)和純虛函數(shù)虛函數(shù)是為了實現(xiàn)多態(tài),所謂多態(tài)就是一個接口有多種實現(xiàn)的方法,多態(tài)實現(xiàn)基類必須要有虛函數(shù),子類對虛函數(shù)重寫,當然也可以不重寫,但是純虛函數(shù)必須重寫,實現(xiàn)多態(tài)就是基類的指針指向子類的對象,從而可以實現(xiàn)對子類的調用。
純虛函數(shù)和虛函數(shù)差不多,在基類中不可以實現(xiàn),只能聲明,子類中重寫,實現(xiàn)多態(tài)。
virtual void fun()=0;
虛析構:在父類析構函數(shù)前加virtual關鍵字,當delete父類指針指向的對象時就會釋放子類的析構函數(shù)。
純虛析構和虛析構的區(qū)別:純虛析構必須類內聲明加virtual,類外實現(xiàn),Base::~Base(){};
深淺拷貝類的深淺拷貝,當類中有指針成員時,當舊對象給新對象初始化就會調用拷貝構造函數(shù),Data ca1(10); Data ca2 = ca1;
調用的拷貝構造函數(shù)形式為:Data(const Data &ob){ma = ob.ma; cout<<"拷貝構造函數(shù)"}
當類中成員含有指針成員時,需要給對象申請獨立的地址空間,Data(const Data &ob){name = new char[strlen(ob.name)+1];strcpy(name,ob.name);cout<<"堆區(qū)的拷貝構造函數(shù)"}
結構體深淺拷貝:淺拷貝:當結構體成員無指針成員時使用,如果含有指針成員,會存在多次釋放的問題
深拷貝:當結構體中含有指針成員時,要申請獨立的地址空間,實現(xiàn)strcpy后,單獨釋放
構造函數(shù)和析構函數(shù)構造函數(shù)和析構函數(shù):構造函數(shù)是將對象初始化,可以有參無參,不能有返回值。析構函數(shù)將對象清理,有參和無參類型,自動調用
當一個類中含有另一個類名的成員時,會先初始化另一個類的構造函數(shù),再調用自身的構造函數(shù),
先釋放自身的析構函數(shù),再釋放另一個類的析構函數(shù),class Data{ ob(a); }
類中定義的函數(shù),可以在類外使用ALT+ENTER實現(xiàn),或者在類外(類名::函數(shù)名)實現(xiàn)
重載和重寫重載是在基類中定義相同的方法名,參數(shù)不同。重寫是基類重寫父類的方法,函數(shù)名和參數(shù)相同。
重載是在一個類中,重寫是子類與父類之間
重載是編譯時,重寫發(fā)生在運行時
重載的參數(shù)類型,參數(shù)個數(shù),參數(shù)順序可以不同,重寫子類和父類方法必須相同
重載對返回類型沒有要求,重寫有要求返回類型
單例模式:當一個類中含有靜態(tài)成員時,靜態(tài)成員是先于所有對象存在的,不需要實例化對象,可以直接通過類名調用,靜態(tài)成員在類中定義,在類外初始化
普通成員和普通成員函數(shù)必須要通過對象調用,一個類中的靜態(tài)成員和成員函數(shù)是被其他所有對象共享的,即一個對象成員發(fā)生修改時,其他對象調用時也會改變
class Data{public:static int a;} int Data::a = 100; Data A1; A1.a/Data::a;
只允許該類實例化一個對象,如何實現(xiàn):將構造函數(shù)和析構函數(shù)私有化,所以只能在類的內部私有實例化,使用static 類名 * const p;//p保存實例化地址 初始化:類名 *const::p = new 類名(創(chuàng)建唯一的實例)
定義一個公有的靜態(tài)成員函數(shù),獲取實例化地址,static 類名 *getAdress(){}
主函數(shù)中使用 類名 *p1 = 類名::靜態(tài)成員函數(shù);
this指針:當類中的成員變量和成員函數(shù)形參重名時,使用this->ma=ma; 非靜態(tài)成員都默認含有this指針
C++高階部分 繼承子類繼承父類的成員和方法,不能繼承構造和析構,重載,賦值運算符
public保持不變,private不可以被繼承,protected只能在子類訪問,不能在類外訪問
格式: class son : public Base
當子類和父類出現(xiàn)同名的成員時,可以使用加作用域區(qū)分 (不加優(yōu)先調用子類)
多繼承格式:class son : public Base1,public Base2
C++多態(tài)(父類指針指向子類空間)靜態(tài)多態(tài),編譯時發(fā)生(早綁定)【函數(shù)重載,運算符重載,重定義】
動態(tài)多態(tài),運行時發(fā)生(晚綁定)【虛函數(shù)】
如果子類和父類出現(xiàn)相同的方法,父類指針指向子類對象時,調用父類的方法。
Base *ob = new Son; ob.func();
所以就要在父類成員函數(shù)前加virtual 子類可加可不加,實現(xiàn)多態(tài),也就是
動態(tài)綁定機制:當出現(xiàn)virtual關鍵字,就會生成虛函數(shù)指針,虛函數(shù)指針查找對應的虛函數(shù)表,查找函數(shù)的入口地址,如果沒有繼承,會指向父類的函數(shù)入口地址。
如果有繼承,子類繼承父類的虛函數(shù)指針和虛函數(shù)表,查找子類的函數(shù)入口地址,指向子類的成員函數(shù)
重載重寫重定義的區(qū)別:
重載函數(shù)名必須相同,參數(shù)列表,返回值類型可以不同。(發(fā)生在一個類中)
重寫函數(shù)名,返回值類型,參數(shù)列表都要相同,子類重寫父類的虛函數(shù)或純虛函數(shù),多用于多態(tài)中。(發(fā)生在子類和基類中)
重定義就是子類和父類函數(shù)名相同,參數(shù)不同,不管有無virtual,都會屏蔽父類函數(shù);參數(shù)相同時,如果沒有virtual,也會屏蔽父類函數(shù),如果有virtual就是重寫。(發(fā)生在子類和基類中)
純虛函數(shù)實例:
煮咖啡和煮茶葉都有,煮水,加入主料,加入輔料等操作
父類將通用的方法定義為純虛函數(shù),然后使用一個普通函數(shù)調用這些步驟
煮咖啡的子類重寫父類的純虛函數(shù),煮茶葉的子類重寫父類的純虛函數(shù)。
主函數(shù)兩種調用方式1.父類指針指向子類對象2.外部定義一個void test(基類名 * p){p->普通函數(shù);delete p;} test(new tea);test(new coffee);
模板 函數(shù)模板(泛型編程)將功能相同類型不同的函數(shù)或類抽象成虛擬的類型,編譯器自動將虛擬的類型具體化,提高代碼重用性
函數(shù)模板 要有template關鍵字修飾 關于T的類型會從主函數(shù)的實參中獲取作相應的改變
函數(shù)模板會編譯兩次,一次對函數(shù)模板本身,一次在函數(shù)調用時
//當函數(shù)模板和普通函數(shù)都存在時會優(yōu)先調用普通函數(shù)
//也可以指定調用模板函數(shù) Swap<>(a,b); 也可以直接告訴模板類型 Swap
//如果形參的兩種類型不同,可以使用函數(shù)模板強制轉換,Swap
//函數(shù)模板也可以重載
template
void Swap(T &a, T &b)
{
T tmp;
tmp=a;
a=b;
b=tmp;
return ;
}
template
void test(T &a)
{
cout<
}
template
void test(T &a,T &b)
{
cout<
}
//當遇到結構體,自定義類型的時候,識別不到就可以使用函數(shù)模板具體化
template
void test(T &a,T &b)
{
cout<
}
class data
{
int a;
friendly void test(data a,data b);
}
//函數(shù)模板具體化
template void test(data a,data b)
{
}
int main()
{
int a=10,b=20;
Swap(a,b);
char a='B',b='A';
Swap(a,b);
return 0;
}
類模板使用類模板時將聲明和定義的文件改為.hpp文件
template
class Data
{
private:
T1 a;
T2 b;
public:
Data();
Data(T1 a,T2 b)
{
this->a = a;
this->b = b;
}
void test()
{
cout<<""endl;
}
};
void main()
{
//不能直接使用無參構造,不會自動轉換類型,不知道該轉換什么類型
//所以使用類模板的使用,調用必須指定類型
Data
ob1.test();
Data
ob2.test();
}
//在類外實現(xiàn)的類模板也要有template關鍵字
template
class Data
{
private:
T1 a;
T2 b;
public:
Data();
Data(T1 a,T2 b)
{
this->a = a;
this->b = b;
}
void test();
};
template
void Data
{
cout<
}
void main()
{
//不能直接使用無參構造,不會自動轉換類型,不知道該轉換什么類型
//所以使用類模板的使用,調用必須指定類型
Data
ob1.test();
Data
ob2.test();
}
數(shù)組模板template
class Array
{
private:
T *arr;//地址
int size;//數(shù)組大小
int capacity;//數(shù)組容量
public:
Array();//無參
Array(int capacity);//有參
//類中有指針成員所以要深拷貝
Array(const Array &ob);
~Array();//析構函數(shù)
Array& operator =(Array &ob);//重寫 賦值運算符深拷貝
void pushBack(int elm);//插入元素
void sortArray();//排序
};
#endif // ARRAYCLASS_HPP
template
Array
{
size = 0;
capacity = 5;
arr = new T[capacity];
memset(arr,0,sizeof(T)*capacity);
}
template
Array
{
this->capacity = capacity;
size = 0;
arr = new T[capacity];
memset(arr,0,sizeof(T)*capacity);
}
template
Array
{
//拷貝構造函數(shù),就對象給新對象賦值
capacity = ob.capacity;
size=ob.size;
arr = new T[capacity];
memset(arr,0,sizeof(T)*capacity);
//要把就得內容拷貝到新的空間
memcpy(arr,ob.arr,sizeof(T)*capacity);
}
template
Array
{
delete []arr;
}
template
Array
{
//判斷舊空間是否為空
if(arr !=NULL)
delete []arr;
capacity = ob.capacity;
size=ob.size;
arr = new T[capacity];
memset(arr,0,sizeof(T)*capacity);
memcpy(arr,ob.arr,sizeof(T)*capacity);
return *this;//返回this的對象
}
template
void Array
{
//是否滿
if(size == capacity)
{
capacity = 2*capacity;
T *tmp = new T[capacity];
//
if(arr != NULL)
{
memcpy(tmp,arr,sizeof(T)*capacity);
delete []arr;
}
arr = tmp;
}
arr[size] = elm;
}
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧