C++基礎:: struct vs class
struct:所有成員都是public
當我們需要直接訪問結構或者類的資料成員時,而不欲打破類(class
)對資料成員都是protected
或者private
的約定俗成的規範(convention),這時struct
便是一個更為合適的選擇,比如C++標準庫對pair
工具類(在<utility>
中定義)的設計:
namespace std
{
template<typename T1, typename T2>
struct pair
{
// member
T1 first;
T2 last;
}
}
因為我們在客戶端程式設計時,是把pair物件當做一種容器
來使用的,既然是容器,存取元素便是基本操作:
std::pair<T1, T2> p = getAPair();
p.first ...
p.second ...
function object
當作為仿函式的一些類沒有特別的資料成員時或者繼承體系時,而且主要是一個括號運算子過載(operator())時,一般使用struct
來定義:
我們暫且以一元運算unary_negate
為例:
template<typename Arg, typename Result>
struct unary_function
{
typedef Arg argument_type;
typedef Result result_type;
}
template<typename T>
struct negate :public unary_function<T, T>
{
T operator()(const T& x)const
{
return -x;
// 本質的操作就這一句,
// 接收一個T型別的變數,返回其負值
}
}
客戶端程式:
int main(int, char**)
{
std::vector<int> src{0, 1, 2, 3, 4};
std::vector<int> dst(src.size());
std::transform(ivec.begin(), ivec.end(),
dst.begin(),
::negate<int>());
std::copy(dst.begin(), dst.end(),
std::ostream_iterator<int>(std::cout, " "));
return 0;
}
相關文章
- C++基礎(八)struct和class的區別C++Struct
- C++ class 和 struct 可以相互繼承嗎C++Struct繼承
- typedef and struct inside class definition?StructIDE
- [Java基礎]Class物件Java物件
- Swift中Class和Struct異同SwiftStruct
- swift中Class和Struct的區別SwiftStruct
- 何時用 struct?何時用 class?Struct
- 深入理解Swift中的Class和StructSwiftStruct
- Python基礎之:struct和格式化字元PythonStruct字元
- c++基礎C++
- C++中的抽象基類(Abstract Base Class)C++抽象
- C++基礎 constC++
- 【C++】C++基礎知識C++
- 精讀《Function VS Class 元件》Function元件
- C# 中 Struct 和 Class 的區別總結C#Struct
- C++ Empty Class OptimizationC++
- OpenGL Matrix Class (C++)C++
- C++基礎總結C++
- C++基礎知識C++
- C++基礎語法C++
- C++ Simple Message/Logging ClassC++
- C++中struct的空間計算C++Struct
- [Swift]陣列元素是class和struct時的引用測試Swift陣列Struct
- 【01】C到C++(基礎)C++
- C++基礎知識整理C++
- c++基礎三(變數)C++變數
- C++基礎學習6C++
- C++基礎資料二C++
- C++基礎學習1C++
- C++基礎知識篇:C++ 運算子C++
- [C++] template+struct 組合使用小技巧C++Struct
- C++ constexp vs constC++
- java基礎:深入理解Class物件與反射機制Java物件反射
- 熱修復與外掛化基礎——dex與class
- C++ -> Java快速學習-基礎C++Java
- c++基礎十(流程結構)C++
- (C++) queue容器基礎知識C++
- C++基礎簡單總結C++
- C++的基礎學習5C++