最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分享C++三種類型new類型的運(yùn)算符使用詳情

 更新時(shí)間:2022年04月10日 18:37:30   作者:hsy12342611  
這篇文章主要介紹了C++三種類型new運(yùn)算符的使用詳情,文章基于C++運(yùn)算展開主題內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

1.new操作符

new operator,平時(shí)用的最多的new操作符,其對(duì)應(yīng)delete operator,不能被重載,其包含兩個(gè)操作(既申請(qǐng)空間,又調(diào)用構(gòu)造函數(shù))

  • (1)使用::operator new申請(qǐng)內(nèi)存
  • (2)調(diào)用類的構(gòu)造函數(shù)
class CTestUse
{
public:
? ? CTestUse() { cout << __FUNCTION__ << endl; }
? ? virtual ~CTestUse() { cout << __FUNCTION__ << endl; }
?
private:
};
?
void test()
{
? ? string *pStr = new string("new operator");
? ? cout << *pStr << endl;
? ? delete pStr;
?
? ? CTestUse *pCase = new CTestUse;
? ? delete pCase;
}
?
?
int main(int argc, char *argv[])
{
? ? test();
?
? ? return 0;
}

運(yùn)行結(jié)果如下:

2.::operator new

::operator new,只會(huì)申請(qǐng)空間,不會(huì)調(diào)用構(gòu)造函數(shù),可以被重載,其對(duì)應(yīng) ::operator delete (只申請(qǐng)空間)

2.1原始調(diào)用

class CTestUse1
{
public:
? ? CTestUse1() { cout << __FUNCTION__ << endl; }
? ? virtual ~CTestUse1() { cout << __FUNCTION__ << endl; }
? ? void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }
?
private:
};
?
?
void test1()
{
? ? CTestUse1 *pCase = (CTestUse1 *)::operator new (sizeof(CTestUse1));
? ? pCase->show();
? ? ::operator delete(pCase);
?
}
?
int main(int argc, char *argv[])
{
? ? test1();
?
? ? return 0;
}

運(yùn)行結(jié)果如下:

2.2重載1

class CTestUse2
{
public:
? ? CTestUse2() { cout << __FUNCTION__ << endl; }
? ? virtual ~CTestUse2() { cout << __FUNCTION__ << endl; }
? ? void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }
?
? ? void* operator new(size_t size) {
? ? ? ? cout << __FUNCTION__ << endl;
? ? ? ? return ::operator new(size);
? ? }
?
? ? void operator delete(void* ptr) {
? ? ? ? cout << __FUNCTION__ << endl;
? ? ? ? ::operator delete(ptr);
? ? }
?
private:
};
?
void test2()
{
? ? CTestUse2 *pCase = new CTestUse2;
? ? pCase->show();
? ? delete pCase;
?
}
?
int main(int argc, char *argv[])
{
? ? test2();
?
? ? return 0;
}

運(yùn)行結(jié)果如下:

2.3重載2

class CTestUse3
{
public:
? ? CTestUse3() { cout << __FUNCTION__ << endl; }
? ? virtual ~CTestUse3() { cout << __FUNCTION__ << endl; }
? ? void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }
?
? ? void* operator new(size_t size, string str) {
? ? ? ? cout << __FUNCTION__ << str << endl;
? ? ? ? return ::operator new(size);
? ? }
?
? ? void operator delete(void* ptr) {
? ? ? ? cout << __FUNCTION__ << endl;
? ? ? ? ::operator delete(ptr);
? ? }
?
private:
};
?
void test3()
{
? ? CTestUse3 *pCase = new ("heshiyang") CTestUse3;
? ? pCase->show();
? ? delete pCase;
?
}
?
int main(int argc, char *argv[])
{
? ? test3();
?
? ? return 0;
}

運(yùn)行結(jié)果如下:

3.place new

place new在已經(jīng)構(gòu)建好的內(nèi)存中創(chuàng)建對(duì)象,其只會(huì)返回已經(jīng)申請(qǐng)好的內(nèi)存指針,多用在高性能場(chǎng)景下,提前申請(qǐng)好內(nèi)存,可以節(jié)省申請(qǐng)內(nèi)存開消 (只調(diào)用構(gòu)造函數(shù))

class CTestUse4
{
public:
? ? CTestUse4() { cout << __FUNCTION__ << endl; }
? ? virtual ~CTestUse4() { cout << __FUNCTION__ << endl; }
? ? void show() { cout << __FILE__ << " " << __FUNCTION__ << endl; }
?
? ? void* operator new(size_t size, void* p) {
? ? ? ? cout << __FUNCTION__ << endl;
? ? ? ? return p;
? ? }
?
? ? void operator delete(void* ptr) {
? ? ? ? cout << __FUNCTION__ << endl;
? ? ? ? ::operator delete(ptr);
? ? }
?
private:
};
?
void test4()
{
? ? char* pChar = new char[sizeof(CTestUse4)];
? ? CTestUse4* pCase = new (pChar) CTestUse4; //調(diào)用全局::new (pChar) CTestUse4,new (pChar) CTestUse4調(diào)用重載new
? ? //delete pCase;
? ? pCase->~CTestUse4();
}
?
int main(int argc, char *argv[])
{
? ? test4();
?
? ? return 0;
}

運(yùn)行結(jié)果如下:

到此這篇關(guān)于C++三種類型new運(yùn)算符的使用詳情的文章就介紹到這了,更多相關(guān)C++ new運(yùn)算符內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++類中的繼承實(shí)例詳解

    C++類中的繼承實(shí)例詳解

    這篇文章主要介紹了C++類中的繼承實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++多重繼承二義性原理實(shí)例解析

    C++多重繼承二義性原理實(shí)例解析

    這篇文章主要介紹了C++多重繼承二義性原理實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例

    C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例

    這篇文章主要介紹了C++ 數(shù)字的反轉(zhuǎn)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語(yǔ)言高級(jí)教程之變長(zhǎng)數(shù)組詳解

    C語(yǔ)言高級(jí)教程之變長(zhǎng)數(shù)組詳解

    這篇文章主要介紹了C語(yǔ)言中變長(zhǎng)數(shù)組的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • linux下C語(yǔ)言中的mkdir函數(shù)與rmdir函數(shù)

    linux下C語(yǔ)言中的mkdir函數(shù)與rmdir函數(shù)

    以下是對(duì)C語(yǔ)言中的mkdir函數(shù)與rmdir函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來(lái)參考下
    2013-08-08
  • 通過c語(yǔ)言調(diào)用系統(tǒng)curl動(dòng)態(tài)庫(kù)的示例詳解

    通過c語(yǔ)言調(diào)用系統(tǒng)curl動(dòng)態(tài)庫(kù)的示例詳解

    這篇文章中我們將通過一個(gè)簡(jiǎn)單的示例來(lái)講解如何在Ubuntu系統(tǒng)中通過C語(yǔ)言調(diào)用動(dòng)態(tài)庫(kù)(共享庫(kù))的方法,我們將使用libcurl庫(kù),這是一個(gè)基于客戶端的URL傳輸庫(kù),廣泛用于各種程序和應(yīng)用中以訪問網(wǎng)頁(yè)和服務(wù)器數(shù)據(jù),需要的朋友可以參考下
    2024-03-03
  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之鏈表(一)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)與算法之鏈表(一)

    鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)方式。鏈表的內(nèi)存是不連續(xù)的,前一個(gè)元素存儲(chǔ)地址的下一個(gè)地址中存儲(chǔ)的不一定是下一個(gè)元素。小編今天就將帶大家深入了解一下鏈表,快來(lái)學(xué)習(xí)吧
    2021-12-12
  • 淺析C/C++中sort函數(shù)的用法

    淺析C/C++中sort函數(shù)的用法

    做項(xiàng)目的時(shí)候,排序是一種經(jīng)常要用到的操作。如果每次都自己寫個(gè)冒泡之類的O(n^2)排序,不但程序容易超時(shí),而且浪費(fèi)寶貴的時(shí)間,還很有可能寫錯(cuò)。STL里面有個(gè)sort函數(shù),可以直接對(duì)數(shù)組排序,復(fù)雜度為n*log2(n)。
    2014-09-09
  • C語(yǔ)言實(shí)現(xiàn)ATM系統(tǒng)程序的完整代碼

    C語(yǔ)言實(shí)現(xiàn)ATM系統(tǒng)程序的完整代碼

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)ATM系統(tǒng)程序的完整代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • C++中g(shù)etline()的用法詳解

    C++中g(shù)etline()的用法詳解

    這篇文章主要介紹了C++中g(shù)etline()的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02

最新評(píng)論

长宁县| 大新县| 光泽县| 南溪县| 格尔木市| 新民市| 双城市| 郑州市| 六盘水市| 旬邑县| 汶上县| 葵青区| 商南县| 合阳县| 射阳县| 西昌市| 大宁县| 东源县| 綦江县| 蕲春县| 大庆市| 怀化市| 亚东县| 金山区| 鹤岗市| 庐江县| 义马市| 兴安县| 云和县| 界首市| 江源县| 濮阳市| 五原县| 黄骅市| 平昌县| 通海县| 永修县| 锡林浩特市| 象山县| 康马县| 万载县|