std istream 初始化的問題

2021-08-02 22:36:07 字數 698 閱讀 9180

今天在專案中遇到乙個小問題,記錄一下,就是如何在初始化乙個在類中的流引用,但是我需要我的建構函式不能傳入乙個流,因為我的建構函式不一定全部是需要傳入流這個引數的,

示例如下:這是傳統的方法,但是有時候我並不需要在建構函式傳入乙個流,哪該如何解決這個問題

class test

; //test(int a) : _a(a){}; 我需要的是這個,但是_mystream必須初始化

private:

std::istream& _mystream;

int _a;

}

解決辦法:強行構造乙個子類的stringstream的引用,進行初始化,我們無法強行構造乙個istream的引用,因為它的copy建構函式是delete的

class test

; test(int a)

: _a(a)

,_mystream((stringstream&(stringstream()))

{};

private:

std::istream& _mystream;

int _a;

}

這個方法解決了我的問題,此後我呼叫test(int a)物件就不需要強行傳入乙個istream物件進去,有必要的時候才會掉用test(int a, std::stream& s)

初始化 指定初始化

id alloc 物件的誕生過程,主要是從作業系統獲得一塊足夠大的記憶體,以存放該類的全部例項變數,並將其指定為存放記憶體物件的實力變數的位置。alloc方法同時將這塊記憶體全部設定為0。結果是 bool變數初始化為no,所有的int型別變數為0,float變數為0.0,所有的指標為nil.obje...

初始化 1 預設初始化 列表初始化

初始化的基本概念 事實 初始化和賦值是兩個完全不同的操作。初始化,是建立變數時賦予其乙個初始值。賦值,是把物件的當前值擦除,用乙個新值代替。列表初始化 p39 作為c 11新標準的一部分,用花括號 來初始化變數得到了全面應用。出於某些原因,這種初始化的方式叫做列表初始化。現在,無論是初始化物件還是某...

初始化 MyBatis初始化之載入初始化

在mybatis初始化過程中,大致會有以下幾個步驟 1.建立configuration全域性配置物件,會往typealiasregistry別名註冊中心新增mybatis需要用到的相關類,並設定預設的語言驅動類為xmllanguagedriver 3.構建defaultsqlsessionfacto...