struct:所有成员都是public

当我们需要直接访问结构或者类的数据成员时,而不欲打破类(class)对数据成员都是protected或者private的约定俗成的规范(convention),这时struct便是一个更为合适的选择,比如C++标准库对pair工具类(在<utility>中定义)的设计:

namespace std
{template<typename T1, typename T2>struct pair{// memberT1 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 vs class相关推荐

  1. ibm aix_IBM AIX设备驱动程序开发

    在传统的UNIX®中,术语" 设备"指的是硬件组件,例如磁盘驱动器,磁带驱动器,打印机,键盘,伪设备(例如控制台,错误特殊文件和null特殊文件)等等. 在AIX中,这些设备称为内 ...

  2. 秋招经历(2020蒟蒻)

    秋招准备结束了,而我只能去捡漏.本人秋招目标比较不明确,但对于一个普通人,寻找合适自己的发展道路,并不容易.所以我在秋招过程中做了很多的尝试,职业生涯很长,选择期的犹豫还是有必要的.当然,对于身边目标 ...

  3. Celoria的板子(last update:20201017)

    文章目录 数据结构 树状数组 基础 二维树状数组 逆序对 线段树 CDQ分治 树论 树的重心 定义 性质 代码 树的直径 性质 代码 LCA 主席树 平衡树 替罪羊树 Treap 区间翻转 Splay ...

  4. 在Java绘图坐标原点在_java 绘图

    java 绘图 圆形.线条.矩形.填充 插入图片 文字 //绘图 import java.awt.*; import javax.swing.*; public class Index extends ...

  5. struct用法_精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列的关于RestTemplate的文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HT ...

  6. [C/C++基础知识] 面试再谈struct和union大小问题

    最近找工作参加了很多笔试,其中考察结构体和联合体的大小问题是经常出现的一个问题.虽然题目简单而且分值比较低,但是还是想再给大家回顾下这些C和C++的基础知识.希望文章对你有所帮助~         P ...

  7. Hive基础08、Hive引入Struct结构体

    Hive基础08.Hive引入Struct结构体 1.建表语句 创建一个温良贤淑女子的表 英文关键字解析: 1.CREATE TABLE 创建一个指定名字的表,如果库中已有相同名的表,则抛出异常: 用 ...

  8. Golang 基础知识(十一.struct结构体)

    struct结构体 1.定义 2.匿名结构体 3.键值对初始化 4.构造函数 4.1 (值)方法和接收者 4.2 (指针)方法和接受者 4.3 结构体的"继承 4.4 序列化与反序列化 4. ...

  9. 【零基础学C语言】知识总结八:struct 结构体与 union 共用体

    struct 结构体 struct即结构体,C程序中经常需要用相关的不同类型的数据来描述一个数据对象.例如,描述学生的综合信息时,需要使用学生的学号.姓名.性别等不同类型的数据时,像这种数据类型总是在 ...

最新文章

  1. struts2 form标签加上validate=true就出错的解决办法
  2. C#3.0学习笔记(8)浅谈接口interface
  3. parameter localparam define的区别
  4. QQProtect.exe(Q盾)
  5. SVM学习——在matlab上安装libsvm库(一)
  6. 3_V1-类和对象 -- 默认成员函数
  7. php框架使用教程,php框架laravel excel包使用教程介绍
  8. jboss7.1.安装配置
  9. 研究员使用新型CPU攻击技术 “SmashEx” 攻破 Intel SGX
  10. javascript 函数,数组,document.write()
  11. unslider.js 实现移动web轮播
  12. 拓端tecdat|R语言社区发现算法检测心理学复杂网络:spinglass、探索性图分析walktrap算法与可视化
  13. 怎么卸载虚拟机中的mysql_虚拟机卸载mysql数据库
  14. 基于OpenCV的简单人流量统计
  15. 3串锂电池充电保护板设计
  16. Golang里的AES加密、解密
  17. 【期末复习笔记】知识产权法——著作权、专利法、商标权
  18. statement的意思和用法
  19. java环巢湖区域旅游网站计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  20. Oracle数据库深入学习

热门文章

  1. spring boot部署实战
  2. 域控查看ldap端口命令_LDAP基础安装与简单入门使用
  3. 如何在html上做弹框效果,网页|利用提示框(Tooltip)实现弹窗效果
  4. python中3个while循环_Python3 里怎么让一个包含 while 循环的异步函数不断运行,而不阻塞正常的代码流程...
  5. IntelliJ IDEA 激活
  6. Sklearn专题实战——针对Category特征进行分类
  7. LeetCode 222. 完全二叉树的节点个数(递归)
  8. tensorflow中的global_step参数(转)
  9. zookeeper学习之环境搭建
  10. oracle有三种类型的异常错误: 预定义 ( Predefined )错误里面的常见错误