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++中 struct 和 class 的區別C++Struct
- C++中struct 和 class的區別C++Struct
- C++ class 和 struct 可以相互繼承嗎C++Struct繼承
- Struct與Class辨析Struct
- 【.net基礎】--初識StructStruct
- [Java基礎]Class物件Java物件
- Swift中Class和Struct異同SwiftStruct
- swift中Class和Struct的區別SwiftStruct
- 何時用 struct?何時用 class?Struct
- C++ 基礎C++
- c++基礎C++
- 深入理解Swift中的Class和StructSwiftStruct
- C++中的抽象基類(Abstract Base Class)C++抽象
- Python基礎之:struct和格式化字元PythonStruct字元
- C++基礎::StreamC++
- C# 中 Struct 和 Class 的區別總結C#Struct
- C++基礎語法C++
- C++基礎 constC++
- C++基礎::stringC++
- C++基礎知識C++
- OpenGL Matrix Class (C++)C++
- C++ Empty Class OptimizationC++
- Swift語言中class、struct、enum的聯絡與區別SwiftStruct
- 精讀《Function VS Class 元件》Function元件
- 【01】C到C++(基礎)C++
- c++基礎三(變數)C++變數
- 面試總結(C++基礎)面試C++
- C++基礎::檔案流C++
- C++基礎知識整理C++
- C++基礎資料二C++
- CSS基礎知識-ID/Class/Div/Span/SelectorCSS
- [Swift]陣列元素是class和struct時的引用測試Swift陣列Struct
- 窺探Swift之別具一格的Struct和ClassSwiftStruct
- C++中struct的空間計算C++Struct
- C++基礎知識篇:C++ 運算子C++
- java基礎:深入理解Class物件與反射機制Java物件反射
- 熱修復與外掛化基礎——dex與class