請你來說一下C++中struct和class的區別
- 在C++中,可以用struct和class定義類,都可以繼承。區別在于:structural的默認繼承權限和默認訪問權限是public,而class的默認繼承權限和默認訪問權限是private。
- 另外,class還可以定義模板類形參,比如template <class T, int i>。
請你回答一下C++類內可以定義引用數據成員嗎?
- 可以,必須通過成員函數初始化列表初始化。
請你回答一下什么是右值引用,跟左值又有什么區別?
- 右值引用是C++11中引入的新特性 , 它實現了轉移語義和精確傳遞。
目的
- 1. 消除兩個對象交互時不必要的對象拷貝,節省運算存儲資源,提高效率。
- 2. 能夠更簡潔明確地定義泛型函數。
左值和右值的概念:
- 左值:能對表達式取地址、或具名對象/變量。一般指表達式結束后依然存在的持久對象。
- 右值:不能對表達式取地址,或匿名對象。一般指表達式結束就不再存在的臨時對象。
右值引用和左值引用的區別:
- 1. 左值可以尋址,而右值不可以。
- 2. 左值可以被賦值,右值不可以被賦值,可以用來給左值賦值。
- 3. 左值可變,右值不可變(僅對基礎類型適用,用戶自定義類型右值引用可以通過成員函數改變)
參考鏈接
-
C++:泛型(模板)函數