C++入门(浅谈类和对象)

1 命名空间

1-1命名空间的定义

定义命名空间的目的是为了不与标识符的名称进行冲突,命名空间中可以定义函数,变量,类型。

比如:这里的rand和strlens其实是函数,在命名空间中可以避免与全局作用域中的rand函数和strlens函数冲突,其次命名空间还可以嵌套定义

同时一个命名空间定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;namespace character{char* next;int people;}
}

1-2命名空间的使用

方法1:加命名空间名称+作用域限定符

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
int main()
{cout << bit::character::people<< endl;return 0;
}

方法2:使用using将命名空间某个成员引入

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
using bit::Add;
int main()
{cout << Add(4,5)<< endl;return 0;
}

方法3:用using namespace将某个命名空间引入

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
namespace bit
{int rand = 10;int strlens = 20;int Add(int a, int b){return a + b;}class bit{int Sub(int a = 4, int b = 5){return b - a;};double _money;float  _lucky;int _life;}*p;namespace character{char* next;int people=10;}
}
using namespace bit;
using namespace character;
int main()
{cout <<people << endl;return 0;
}

2 C++输入和输出

C++的输入输出会自动识别类型,非常方便不像C那样需要printf指定类型输出,其次C++也是需要包含头文件的,输入流cout,输出流cin所需的头文件就是#include<iostream>,<<是流插入运算符,>>是流提取运算符,std是C++标准库的命名空间名,C++将标准库的定义和实现都放在这个命名空间里

3 缺省参数

调用的函数可以存在没有参数,或者参数缺省,下面来给大家示例

void fun(int a = 10)
{cout << a << endl;
}
int main()
{fun(2);fun();return 0;
}

存在多个参数时,不能隔着缺省,只能从右向左连续缺省

int fun(int a = 10,int b=6,int c = 8)
{return a + b + c;
}
int main()
{cout << fun(2, 4) << endl;cout << fun(4, 4, 4) << endl;cout << fun(5) << endl;fun(5);return 0;
}

4 函数重载

也就是说我可以用相同的函数名,但是参数类型不一样,编译器会自动识别函数参数类型进行相应的匹配

int fun(int a = 10,int b=6,int c = 8)
{return a + b + c;
}
void fun(char* p, char a, int b)
{cout << p << endl;cout << a << endl;cout << b << endl;
}
int main()
{char arr[15] = "I love China!";cout << fun(2, 4) << endl;fun(arr, 65, 4);return 0;
}

5 引用

引用也相当于取别名,比如你的名字一样有小名,有大名。

引用的变量其实就是这个变量本身,在语法上其实引用是别名和本名公用同一块空间的,

但是底层逻辑就不是了,底层逻辑就是指针。

int main()
{int a = 10;int& b = a;b = 100;cout << a << endl;return 0;
}

6 内联函数

内联函数其实是一种空间换时间的方式,内联函数会在调用它的地方展开,不会开辟函数栈帧,提高了程序的运行效率,但是如果你的内联函数的空间很大很大,那么编译器会自动把它的内联取消定义。

关键字修饰:inline

可以看到下面的汇编代码中根本没有为fun函数开辟栈帧只是调用而已

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

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

相关文章

【PgSQL】导出表结构为EXCEL

详细SQL语句&#xff1a; C.relname ‘你的表名’ 直接输入表面即可 PgSQL 打印表结构语句 SELECT C.relname AS "表名",CAST(obj_description(C.oid, pg_class) AS VARCHAR) AS "表名描述",A.attname AS "字段名",CASE WHEN A.attnotnull f …

ArcGIS导入excel中的经纬度信息,绘制矢量

1.首先整理坐标信息 2.其次转成2003格式的excel文件 3.导入arcgis&#xff0c;点击右键添加excel数据 4.显示xy数据 5.显示经度和纬度信息 6&#xff1a;点击【地理坐标系】->【World】->【WGS 1984】->【确定】 7.投影带的确定方式&#xff1a; 因为自己一直…

智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航

随着人们压力的不断增加&#xff0c;经常会看见在日常生活中由于小摩擦造成的大事故。如何在事故发生时进行及时告警&#xff0c;又如何在事故发生后进行证据搜索与事件溯源&#xff1f;旭帆科技智能视频监控人员危险行为/事件检测算法可以给出答案。 全程监控&#xff0c;有源…

hive聚合函数之排序

1 全局排序&#xff08;Order By&#xff09; Order By&#xff1a;全局排序&#xff0c;只有一个Reduce。 (1&#xff09;.使用Order By子句排序 asc&#xff08;ascend&#xff09;&#xff1a;升序&#xff08;默认&#xff09; desc&#xff08;descend&#xff09;&#…

汽车清除积碳和清洗节气门

汽车清除积碳和清洗节气门 汽车需要清除积碳的部位检查积碳方法&#xff1a; 清除积碳和清洗节气门风险&#xff1a;燃油宝 第一次清除积碳1万公里2万公里3万公里--5万公里6万公里以上 汽车需要清除积碳的部位 节气门喷油嘴进气道燃烧室 检查积碳方法&#xff1a; 建议每3到5…

ControlNet on diffusers

ControlNet on diffusers 参考&#xff1a;https://huggingface.co/docs/diffusers/using-diffusers/controlnet v0.24.0 ControlNet 通过输入给 diffusion 模型一个额外的输入图作为条件&#xff0c;来控制生成图的结果。这个条件输入图可以是各种形式&#xff0c;如 canny 边…

Ubuntu如何安装KVM

环境&#xff1a; 联想E14笔记本 Ubuntu20.04 问题描述&#xff1a; Ubuntu如何安装KVM 解决方案&#xff1a; 1.验证CPU是否支持硬件虚拟化 rootst-ThinkPad-E14:~# grep -Eoc (vmx|svm) /proc/cpuinfo 162.检查 VT 是否在 BIOS 中启用 安装 apt install cpu-checker …

Draw.io or diagrams.net 使用方法

0 Preface/Foreword 在工作中&#xff0c;经常需要用到框图&#xff0c;流程图&#xff0c;时序图&#xff0c;等等&#xff0c;draw.io可以完成以上工作。 official website:draw.io 1 Usage 1.1 VS code插件 draw.io可以扩展到VS code工具中。

Vue 详细教程

Vue实战 1. Vue 引言 渐进式 JavaScript 框架 --摘自官网 官网地址&#xff1a;Vue.js - 渐进式 JavaScript 框架 | Vue.js # 渐进式 1. 易用 html css javascript 2. 高效 开发前端页面 非常高效 3. 灵活 开发灵活 多样性 # 总结 Vue 是一个javascript 框架 js 简化页面js操作…

单机环境下一人一单

优惠券秒杀 添加优惠卷 店铺发布优惠券又分为平价券和特价券, 平价券可以任意购买而特价券需要秒杀抢购(限制数量和时间) tb_voucher(平价券): 优惠券的基本信息 tb_seckill_voucher(秒杀券): 有voucher_id字段表示具有优惠卷的基本信息,此外还有库存,开始抢购时间,结束抢购…

Java使用Microsoft Entra微软 SSO 认证接入

1. Microsoft Entra Microsoft Entra ID 是基于云的标识和访问管理服务&#xff0c;可帮助员工访问外部资源。 示例资源包括 Microsoft 365、Azure 门户以及成千上万的其他 SaaS 应用程序。 Microsoft Entra ID 还可帮助他们访问你的企业 Intranet 上的应用等内部资源&#x…

每天五分钟计算机视觉:GoogLeNet的核心模型结构——Inception

本文重点 当构建卷积神经网络的时候,我们需要判断我们的过滤器的大小,这往往也作为一个超参数需要我们进行选择。过滤器的大小究竟是 11,33 还是 55,或者要不要添加池化层,这些都需要我们进行选择。而本文介绍的Inception网络的作用就是代替你来决定,把它变成参数的一部…

利用Pytorch预训练模型进行图像分类

Use Pre-trained models for Image Classification. # This post is rectified on the base of https://learnopencv.com/pytorch-for-beginners-image-classification-using-pre-trained-models/# And we have re-orginaized the code script.预训练模型(Pre-trained models)…

uniapp交互反馈api的使用示例

官方文档链接&#xff1a;uni.showToast(OBJECT) | uni-app官网 1.uni.showToast({}) 显示消息提示框。 常用属性&#xff1a; title:页面提示的内容 image&#xff1a;改变提示框默认的icon图标 duration&#xff1a;提示框在页面显示多少秒才让它消失 添加了image属性后。 注…

前端体系:前端应用

目录 前端体系基础 html&#xff08;超文本标记语言&#xff09; css&#xff08;层叠样式单&#xff09; javascript&#xff08;&#xff09; 一、前端体系概述 二、前端框架 React Vue Angular 三、前端库和工具 lodash Redux Webpack 四、模块化和组件化 ES…

Java中的链表

文章目录 前言一、链表的概念及结构二、单向不带头非循坏链表的实现2.1打印链表2.2求链表的长度2.3头插法2.4尾插法2.5任意位置插入2.6查找是否包含某个元素的节点2.7删除第一次出现这个元素的节点2.8删除包含这个元素的所以节点2.9清空链表单向链表的测试 三、双向不带头非循坏…

RNN介绍及Pytorch源码解析

介绍一下RNN模型的结构以及源码&#xff0c;用作自己复习的材料。 RNN模型所对应的源码在&#xff1a;\PyTorch\Lib\site-packages\torch\nn\modules\RNN.py文件中。 RNN的模型图如下&#xff1a; 源码注释中写道&#xff0c;RNN的数学公式&#xff1a; 表示在时刻的隐藏状态…

可替代LM5145,5.5V-100V Vin同步降压控制器_SCT82A30

SCT82A30是一款100V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输入电压下降期间&am…

C语言之文件操作(下)

C语言之文件操作&#xff08;下&#xff09; 文章目录 C语言之文件操作&#xff08;下&#xff09;1. 文件的顺序读写1.1 文件的顺序读写函数1.1.1 字符输入/输出函数&#xff08;fgetc/fputc&#xff09;1.1.2 ⽂本⾏输⼊/输出函数&#xff08;fgets/fputs&#xff09;1.1.3 格…

Spring Boot之自定义starter

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring Boot的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一. starter是什么 二.为什么要使…