C++ class、struct区别

一、默认访问控制不同(最主要)

      struct默认为public,class默认为private。这个访问控制既是指成员的默认访问属性,又指继承时默认的继承属性。

二、定义template时不同

      在模版中,类型参数前面可以使用class或typename,如果使用struct,则含义不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是类型参数。例如,

template <struct X>
void f(X x)
{


}

//出错信息:error C2065: 'X' : undeclared identifier

三、赋值方式

      class和struct如果定义了构造函数或虚函数的话,都不能用大括号进行初始化,成员函数无影响。一般struct可用大括号赋值,class不可。这个其实也是因为private和public的原因。

四、总结

  struct可以写函数,可以继承,可以多态,在这方面和class没啥区别。struct更适合看成是一个数据结构的实现体,class更适合看成是一个对象的实现体。到底是用struct还是class,完全看个人的喜好,将程序里所有的class全部替换成struct,依旧可以正常运行。但最好还是:当你觉得你要做的更像是一种数据结构的话,那么用struct,如果你要做的更像是一种对象的话,那么用class。 当然,对于访问控制,应该在程序里明确的指出,而不是依靠默认,这是一个良好的习惯,也让你的代码更具可读性。 

转载于:https://www.cnblogs.com/chakyu/p/7411850.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Alpine Linux详解

简介 Small. Simple. Secure.Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox. Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版。 Alpine 的意思是“高山的”&#xff0c;它采用了musl libc和busybox以减…

java stream 原理

java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字&#xff0c;然后从中选出最长的一个&#xff0c;并输出其长度 1. 最直白的实现 缺点 迭代次数过多频繁产生中间结果&#xff0c;性能无法接受2. 平常写法 int …

ubuntu文本模式获得权限修改profile

针对ubuntu14.04以下&#xff0c;越旧版本&#xff0c;旧的指令也有效。 进入登录页面&#xff0c;按shiftaltF1进入root环境&#xff0c;验证用户名密码。 然后输入&#xff1a;cd /etc 进入etc文件 在输入&#xff1a;/usr/bin/sudo vi profile 进入profile文件的文本编辑模…

here文档 here doc EOF重定向

here文档 here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell脚本程序中&#xff0c;向一条命令传递输入的一种特殊方法是使用here文档。一个here document就是一段带有特殊目的的代码段。它使用I/O重定向的形式将一个命令序列传…

Java常量池理解与总结

2019独角兽企业重金招聘Python工程师标准>>> 一.相关概念 什么是常量用final修饰的成员变量表示常量&#xff0c;值一旦给定就无法改变&#xff01;final修饰的变量有三种&#xff1a;静态变量、实例变量和局部变量&#xff0c;分别表示三种类型的常量。Class文件中…

转载:https://blog.csdn.net/dcrmg/article/details/52939318

张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析&#xff08;附标定程序和棋盘图&#xff09;使用Opencv实现张正友法相机标定之前&#xff0c;有几个问题事先要确认一下&#xff0c;那就是相机为什么需要标定&#xff0c;标定需要的输…

Redis学习笔记--Redis数据过期策略详解==转

本文对Redis的过期机制简单的讲解一下  讲解之前我们先抛出一个问题&#xff0c;我们知道很多时候服务器经常会用到redis作为缓存&#xff0c;有很多数据都是临时缓存一下&#xff0c;可能用过之后很久都不会再用到了&#xff08;比如暂存session&#xff0c;又或者只存放日行…

会员连锁配置以及金额走向

PS&#xff1a;所有电子支付方式的资金走向都是同样的&#xff0c;配置的是什么支付方式就走什么支付方式;下面以支付宝为例说明 一、连锁非总机模式 资金走向&#xff1a; 支付宝&#xff1a;收到的钱在主账号配置的支付宝&#xff0c;会员卡的金额在主账号 微信&#xff1a;收…

Python标准模块--logging

Python标准模块--logging参考http://www.cnblogs.com/zhbzz2007/p/5943685.html1 logging模块简介logging模块是Python内置的标准模块&#xff0c;主要用于输出运行日志&#xff0c;可以设置输出日志的等级、日志保存路径、日志文件回滚等&#xff1b;相比print&#xff0c;具备…

Podfile grammar

参考&#xff1a;http://www.jianshu.com/p/8af475c4f717 Podfile Podfile文件详细描述了一个或多个工程中targets的依赖关系。Podfile会默认创建一个隐式的目标链接到工程中用户的第一个target&#xff0c;名称为“default”。 一个Podfile可以非常简单: *pod AFNetworking, ~…

并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...

1.协程并发&#xff1a;切保存状态单线程下实现并发&#xff1a;协程 切 保存状态 yield 遇到io切&#xff0c;提高效率 遇到计算切&#xff0c;并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程&#xff1a;。。。单线程下实现…

pymysql

连接数据库 连接时需要额外指定参数dbcursor.execute( ) 操作SQL语句SELECT VERSION() 获得当前版本CREATE DATABASE spiders DEFAULT CHARACTER SET utf8 创建数据库import pymysql db pymysql.connect(hostlocalhost,user ,password ,port3306)#IP&#xff0c;用户名&#x…

C# 多线程及同步简介示例

60年代&#xff0c;在OS中能拥有资源和独立运行的基本单位是进程&#xff0c;然而随着计算机技术的发展&#xff0c;进程出现了很多弊端&#xff0c;一是由于进程是资源拥有者&#xff0c;创建、撤消与切换存在较大的时空开销&#xff0c;因此需要引入轻型进程&#xff1b;二是…

opencv-python单目视觉标定,简单易用。

import cv2 import numpy as np import glob# 设置寻找亚像素角点的参数&#xff0c;采用的停止准则是最大循环次数30和最大误差容限0.001 criteria (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS, 30, 0.001)# 获取标定板角点的位置 objp np.zeros((6 * 7, 3), np.f…

python多线程多进程

一、线程&进程 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;&#xff0c;比如打开一个浏览器就是启动一个浏览器进程&#xff0c;打开一个记事本就启动了一个记事本进程&#xff0c;打开两个记事本就启动了两个记事本进程&#xff0c…

Spring Framework 5.1.6、5.0.13 与 4.3.23 发布

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; Spring Framework 5.1.6、5.0.13 与 4.3.23 发布了。 v5.1.6 包含 49 个 bug 修复和功能改进&#xff1b;v5.0.13 是 5.0.x 系列的最后一个版本&#xff0c;包含了 25 个 bug 修复和功能改进&am…

curl命令

Curl是一种支持多种协议&#xff08;http、https&#xff0c;ftp&#xff09;等&#xff0c;利用url规则在命令行下工作的文件传输工具&#xff0c;还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征 1.语法&#xff1a; cu…

单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴

转&#xff1a;https://blog.csdn.net/chentravelling/article/details/53558096 1.正文 图像处理、立体视觉等等方向常常涉及到四个坐标系&#xff1a;世界坐标系、相机坐标系、图像坐标系、像素坐标系。例如下图&#xff1a; 构建世界坐标系只是为了更好的描述相机的位置在哪…

Python基础知识-05-数据类型总结字典

python其他知识目录 1、一道题&#xff0c;选择商品的序号。程序员和用户各自面对的序号起始值 如有变量 googs [汽车,飞机,火箭] 提示用户可供选择的商品&#xff1a; 0,汽车1,飞机2,火箭用户输入索引后&#xff0c;将指定商品的内容拼接打印&#xff0c;如&#xff1a;用户输…

Python学习笔记之异常

Python用异常对象来表示异常情况&#xff0c;如果异常对象未被处理或捕捉&#xff0c;程序就会回溯&#xff08;traceback&#xff09;中止执行。 异常可以在出错时自动引发&#xff0c;也可以主动引发。 异常被引发后如果不被处理就会传播至程序调用的地方&#xff0c;直到主程…