日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c与c++遗漏点

發布時間:2025/3/20 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c与c++遗漏点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

c和c++部分知識點:

###
i++ 與 ++i 區別
內建數據類型,效率沒有區別;自定義數據類型的情況,++i效率較高,原因++i返回對象的引用,而i++返回對象的值,產生較大復制開銷。
i++操作符重載如下:
A operator++(int) {
??????? A temp(num);
??????? num++;
??????? return temp;
??? }
++i操作符重載如下:
A& operator++() {
??????? num++;
??????? return *this;
??? }
?
###??
空類編譯器會安插一個char,因此sizeof空類為1字節;一個多重繼承兩個空類的空類依然為1字節;虛繼承一個空類則子類有個指針指向基類,則大小為4字節,虛繼承兩個空類則為8.

###
sizeof為操作符,編譯時處理,表示能容納最大字節;strlen為函數,運行時表示字符串長度,并且不包括'\0'.

###
內聯是以代碼膨脹為代價的,省去函數調用,提高效率,如果函數內部運行時間遠大函數調用時,則提高效率有限。

#33
常量指針,指向常量的指針;指針常量,首先是常量,再是指針,指針常量就是不能修改這個指針所指向的地址,一開始初始化指向哪兒,就只能指哪兒,像數組名。

#33
char * const p1?;?//指針常量,自身不能修改,所指內容可以被修改。
char const * p2 ; //
const char *p3 ;? // p2,p3都是常量指針,本身可以修改,所指內容不能修改。
const char *const p4; // 本身是常量,并且所指內容也不可被修改。

#33
class MyClass
{
public:
??? MyClass(int data)
??? {
??????? m_data = data;
??? }
??? void Print()
??? {
??????? //std::cout << m_data << std::endl;?//注釋掉此行,傳進來的對象this指針實際上沒有任何用處,這樣的函數其特征與全局函數并沒有區別。
??????? std::cout << "hello!" << std::endl;
??? }
private:
??? int m_data;
};
int _tmain(int argc, _TCHAR* argv[])
{
??? MyClass *pMyClass = new MyClass(1);
??? pMyClass->Print();
??? pMyClass[0].Print();
??? pMyClass[1].Print();
??? pMyClass[10000].Print();
?return 0;
}

注掉結果:
hello!
hello!
hello!
hello!
開啟結果:
1
hello!
1
hello!
-33686019
hello!
訪問違規段錯誤

#33
指針與句柄
指針指向一數據在內存中的地址,windows并不希望一般程序修改其內部數據結構,這不安全,所以windows給每個使用GlobalAlloc等函數聲明的內存區域指定一個句柄,句柄是一種指向指針的指針。
句柄所指的可以是一個很復雜的結構,并且很有可能是與系統有關的,這個句柄的某一項是與系統進行交互的。
指針也可以指向一個復雜的結構,但是通常是由用戶定義的。

#33
const_cast:?去掉const限制
dynamic_cast: 判斷在運行是所指向對象的確切類型,限于對象指針的類型轉換,而非對象變量。
reinterpret_cast: 將一個指針轉換成其他類型的指針;
static_cast: 它能在相關的對象和指針類型之間進行類型轉換。

#33
A a;?//聲明一個無參對象不能用A a();

#33
覆蓋,重寫,重載,隱藏,多態
 首先,覆蓋也稱重寫,英文override
?  特點:
  1. 指不同作用域中(派生類和基類)同名函數的定義  2. 函數名、參數均完全相同  3. 基類對應方法前有 virtual,即被聲明為虛函數
  作用:
? 基類指針和引用在調用對應方法時,根據所指對象類型實現動態綁定。
?  其次,重載(overload)
?  特點:
?  1. 作用域,同一類中  2. 函數名相同,但是參數類型、個數等不完全相同
?  作用:
?  同一方法,根據傳遞消息的不同(類型或個數),產生不同的動作(相同方法名,實現不同)。
?  隱藏(遮蔽)
?  特點:
?  不同作用域,基類和派生之間
?  分兩種情形:
?  一、 基類和派生類函數名相同,但是參數列表不同,不同有無virtual,基類函數在派生類中被隱藏,派生類只能調用新的方法,不能調用已被隱藏的基類方法(不同于重載,作用域不同)
?  二、 基類與派生類同名,同參,但基類函數無virtual,同樣派生類中同樣隱藏基類的同名同參函數(不同于覆蓋,無virtual)

#33
模板會導致代碼膨脹,即二進制代碼臃腫而松散,會嚴重影響程序的運行效率。解決方法是把與參數無關的代碼分離出來。

?

?

總結

以上是生活随笔為你收集整理的c与c++遗漏点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。