C++11智慧指標和引用
最近在學習課程的時候發現一個很困惑的問題,上程式碼
class DataHeader; class LoginResult:public DataHeader; typedef std::shared_ptr<DataHeader> DataHeaerPtr; //原型 void addSendTask(ClientSocketPtr& pClient, DataHeaderPtr& header) //未報錯呼叫 DataHeaderPtr ret = std::make_shared<LoginResult>(); pCellServer->addSendTask(pClient, ret); //報錯呼叫 auto ret = std::make_shared<LoginResult>(); pCellServer->addSendTask(pClient, (DataHeaderPtr)ret); #錯誤程式碼:(DataHeaderPtr)ret
錯誤型別:
非常量引用的初始值必須為左值。
測試環境為vc2017。
疑問:
學習的電子課件中為vc2013,這裡並不會報錯。在vc2017匯入課件中的原始碼這裡也不會報錯。這是什麼原因????????????
相關推薦
C++11智慧指標和引用
最近在學習課程的時候發現一個很困惑的問題,上程式碼 class DataHeader; class LoginResult:public DataHeader; typedef std::shared_ptr<DataHeader> DataHeaerPtr; //原型 void addS
C++ 11 智慧指標的坑和引用計數的意義
一、本節內容本節內容包括:對標準庫的擴充: 智慧指標和引用計數RAII 與引用計數std::shared_ptrstd::unique_ptrstd::weak_ptr二、RAII 與引用計數瞭解 Objective-C/Swift 的程式設計師應該知道引用計數的概念。引用計
C++之智慧指標和普通指標單例模式兩種實現
1 問題 實現c++的單例模式,這裡測試分別寫了通過智慧指標返回物件和普通返回指標 2 程式碼測試 include <iostream> #include <mutex> #include <m
c++ 中的指標和引用
首先: 指標是儲存的變數的地址,引用是變數的別名,這個必須記住 單純的給變數取別名沒有任何的意義,作為引數傳遞,能保證引數傳遞過程中不產生任何的副本 引用可以直接操作變數,但指標的話必須通過(*p)間接的操作變數,指標可讀性行比較低 //引用必須要有初始值 //
C++總結1——指標和引用/陣列的區別【轉】
1.指標和引有什麼區別?(從反彙編角度回答) a.其實引用和指標本質上是一樣的,他們的彙編指令都是兩行。 int a = 10; int *p = &a; //lea eax,[a] 將a的地址放在
C++11--智慧指標shared_ptr,weak_ptr,unique_ptr
共享指標 shared_ptr /*********** Shared_ptr ***********/ // 為什麼要使用智慧指標,直接使用裸指標經常會出現以下情況 // 1. 當指標的生命長於所指的資源:野指標 // 2. 當指標的生命短於所指的資源:資源洩漏 // // 智慧指標: 確保指標和資源的生
C++11--智慧指標詳解及實現
1、基礎概念 智慧指標的一種通用實現技術是使用引用計數。智慧指標類將一個計數器與智慧指標指向的物件相關聯,用來記錄有多少個智慧指標指向相同的物件,並在恰當的時候釋放物件。 每次建立類的新物件時,初始化指標並將引用計數置為1;當物件作為另一物件的副本而建立時,引用計數加1;對一個物件進行賦
c++11 智慧指標淺析
之前學習c++沒有接觸到c++11的一些新的特性,最近啊研究boost庫的時候有接觸到新的東西出來,所以看了一下智慧指標的內容。 c++智慧指標的優勢: 相對於我們傳統的指標在new之後堆區的空間不知該什麼時候delete掉,所以c++11推出了智慧指標。更加方便對指標所指向的資源進行保護和
C++分別用指標和引用實現交換函式
前幾天上課老師給出了一個課堂作業:請分別用指標和引用來實現兩個數的交換。雖然題目比較俗套,但是好久沒寫過C++程式了,依然很生疏,所以我決定總結一下自己的實現,程式粗糙,風格也混合著C,希望大家給提提建議。 老師出這個題目的目的無非是想讓我們聯絡
面試熱門題C與C++的區別-------指標和引用
在面試過程中,C語言和C++的區別總是面試官的側重點,而指標和引用更是容易被問到,指標和引用的區別很簡單,但很少有人能有全面的,有層次有條理的回答這個問題,所以有條理的總結歸納就顯得尤為重要。 先來了
c++11智慧指標解析——揭開底層面紗,完整理解智慧指標
昨天跟同事小小的研究了下關於不同平臺下的位元組對齊問題,起因是遇到了一個坑,vs上沒有問題,在安卓上卻崩潰了。找了半天后發現是c++位元組補齊問題,期間包括使用#pragma pack(1)來限定位元組對齊方式等各種條件,也是把我們搞的七暈八素,總算是進一步瞭解了c++物件結構以及編譯器的操作(有機會的話
使用 C++11 智慧指標時要避開的 10 大錯誤
http://blog.jobbole.com/104666/ 我很喜歡新的C++11的智慧指標。在很多時候,對很多討厭自己管理記憶體的人來說是天賜的禮物。在我看來,C++11的智慧指標能使得C++新手教學更簡單。 其實,我已經使用C++11兩年多了,我無意中發現多種錯誤
C++11智慧指標之使用shared_ptr實現多型
指標除了管理記憶體之外,在C++中還有一個重要的功能就是實現多型。 程式碼很簡單,還是使用虛擬函式。與原生指標並沒有什麼區別: #include <iostream> #include &
C++ 11 智慧指標淺析
定義 為了實現指標自動回收的物件,表現和指標一樣,實際上它利用了棧的機制,每一個智慧指標都是一個模板類,呼叫智慧指標實際上是建立了一個智慧指標的物件,物件生命週期到達盡頭的時候,會自動呼叫智慧指標的解構函式,在解構函式裡,釋放掉它管理的記憶體,從而避免手動de
C++11 智慧指標std::shared_ptr/std::unique_ptr/std::weak_ptr
std::shared_ptr std::shared_ptr 是一種智慧指標,它能夠記錄多少個 shared_ptr 共同指向一個物件,從而消除顯示的呼叫 delete,當引用計數變為零的時候就
C++11 智慧指標之 std::shared_ptr 初級學習
shared_ptr概念 shared_ptr基於“引用計數”模型實現,多個shared_ptr可指向同一個動態物件,並維護了一個共享的引用計數器,記錄了引用同一物件的shared_ptr例項的數量。當最後一個指向動態物件的shared_ptr銷燬時,會自動
【C++】智慧指標之引用計數的實現
在C++11的標準中,引入了智慧指標的概念。 相比於auto_ptr而言,其主要缺陷在於在進行指標拷貝的時候,會出現管理權轉移的問題,導致原指標最終編成一個懸掛指標(dangling pointer
C++11——智慧指標
1. 介紹 一般一個程式在記憶體中可以大體劃分為三部分——靜態記憶體(區域性的static物件、類static資料成員以及所有定義在函式或者類之外的變數)、棧記憶體(儲存和定義在函式或者類內部的變數)和動態記憶體(實質上這塊記憶體池就是堆,通常通過new/malloc操作申請的
5、【C++】指標/引用(指標和引用的區別)
一、指標 int p=12; int *q; int *q=&p; 這裡p為int型別的變數,&p就是p的記憶體地址,*q是一個int型別的變數(是一個值),q為指標是地址,int q=&p;把p的地址賦給了指標q,所以q就
C++之智慧指標std::shared_ptr簡單使用和理解
1 智慧指標std::shared_ptr相關知識和如何使用 我們這裡先說下智慧指標std::shared_ptr,因為我看到我我們專案c++程式碼裡面用得很多,我不是不會,所以記錄學習下 先讓ubuntu終端支援c++11,如果自己的電腦還沒配置號,可以先看下我的這篇部落格