首页 > 编程语言 >C++入门知识

C++入门知识

时间:2024-09-10 21:56:03浏览次数:10  
标签:函数 知识 缺省 C++ 空间 参数 引用 命名 入门

命名空间

为什么会有命名空间?

解决C语言中命名冲突的问题。

(std是所有c++库的命名空间)

解决方法:

采用域作用限定符(::) :指定编译器搜索的位置。

编译器默认的搜索顺序:先局部再全局。

命名空间域

大体有4种域:全局域、局部域、命名空间域、类域。

命名空间域的特点:

1.不会影响生命周期。

2.只能定义在全局,具有隔离作用。

3.当函数命名相同时会将两个域合并。

命名空间的三种使用方法

(展开:开放访问限权)

1.命名空间 +  :: 

2.单独展开一个  using + 命名空间 + :: + 所需要使用的作用符

3.全展开 using namespace 命名空间

特:命名空间内可以随意套娃。

缺省参数

缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实 参则采用该形参的缺省值,否则使用指定的实参。

分类和特性

1.半缺省参数

特点:缺省参数从右往左依次序给,不能间隔和跳跃。

2.全缺省参数

特点:传参的顺序从左往右依次,不能跳跃。

注意:缺省值必须是常量或者全局变量

特别:缺省参数不能在函数声明(.h文件)和定义中同时出现.给缺省值在声明中给(.h文件)。

函数重载

函数重载: 是函数的一种特殊情况, C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这 些同名函数的 形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现功能类似数据类型 不同的问题。

构成重载的条件

1.参数的类型不同

2.参数的个数不同

3.参数的类型顺序不同

特别:如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办

法区分。

C语言不支持函数重载的原因

在 C/C++ 中,一个程序要运行起来,需要经历以下几个 阶段预处理、编译、汇编、链接 。 C语言在链接时,直接用函数名去找地址,有同名函数时区分不开,而c++中引入了函数名修饰规则,名字中引入参数类型。

程序运行的几个阶段

预处理:展开头文件、宏替换、条件编译、去注释。

编译:检查语法并生成汇编代码。

汇编:把汇编代码转成二进制机器码。

链接:将上述生成文件合并生成可执行文件。

引用  &

引用不是定义一个新变量,而是给已存在的变量取一个别名。且编译器不会为引用变量开辟内存空

间,它和它引用的变量 共用同一块内存空间。

特点

1.引用在定义时必须初始化。

2.一个变量可以有多个引用。

3.引用一旦引用一个实体,就不能引用其他实体。(不能改变指向)

 使用场景

1.做函数参数

2.做返回值

注意:如果函数返回时,出了函数作用域,如果返回对象还在(没有还给系统),则可以使用引用,如果已经还给系统,则必须用传值返回。 

传值和传引用的区别

传值返回:传递实参或者返回变量的一份临时的拷贝。

传引用返回:传递实参或者返回变量的别名。(效率更高)

引用和指针的区别

语法上:

引用:引用就是一个别名,没有独立空间,和其引用实体共用同一块空间。

指针:指针是一个地址,需要开空间。

底层上:引用是按照指针方式实现的。(也是开了空间的!)

引用和指针在功能上是类似的,但是引用不能替代指针!!!

原因:引用定义后不能改变指向。 (引用不能实现链表,用指针实现)

标签:函数,知识,缺省,C++,空间,参数,引用,命名,入门
From: https://blog.csdn.net/2301_79224381/article/details/142107153

相关文章

  • 挑战不可能篇1——洛谷28分钟14道CCF GESP C++ 一级上机题&洛谷14道题题解
    扯谈今天继续挑战不可能:洛谷28分钟14道题这我个人认为不简单,算上编译、提交、命名等杂七杂八的东东之后,只剩下了大约1分钟/题。本次挑战的是CCFGESPC++一级上机题.这竟然能成功!下面附上每一题第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题......
  • 机器学习入门篇
    文章目录什么是机器学习?常见机器学习框架经典算法及使用场景1.监督学习(SupervisedLearning)2.无监督学习(UnsupervisedLearning)3.半监督学习(Semi-SupervisedLearning)4.强化学习(ReinforcementLearning)5.集成学习(EnsembleLearning)6.深度学习(DeepLearning)什......
  • JavaScript语法入门四
    变量变量就是在内存中开辟一块用于存储信息的空间。变量命名1.        变量名称必须仅包含字母,数字,符号 $ 和 _。2.        首字符必须非数字。3.        采用驼峰式命名法(camelCase),就是,单词一个接一个,除了第一个单词,其他的每个单词都以大写字母开头......
  • 【C++ Primer Plus习题】14.3
    大家好,这里是国中之林!❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←问题:解答:main.cpp#include<iostream>#include"queuetp.h"usingnamespacestd;intmain(){ Queue......
  • 《教育基础知识与能力》
    1.简述政治经济制度对教育的制约政治经济制度决定教育的性质;政治经济制度决定教育的宗旨和目的;政治经济制度决定教育的领导权;政治经济制度决定受教育权;政治经济制度决定教育内容和教育管理体制;2.简述个体身心发展的一般规律个体身心发展具有顺序性。它是有个由低级到高......
  • SRS流媒体服务器从入门到精通(其一,环境搭建)
    欢迎诸位来阅读在下的博文~在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!江山如画,客心如若,欢迎到访,一展风采文章目录一、SRS简介二、SRS的应用场景三、环境搭建四、推流和拉流使用ffmepg推流和拉流使用OBS推流(推荐)五、补充一、SR......
  • 【Python篇】matplotlib超详细教程-由入门到精通(下篇)
    文章目录前言第六部分:保存与导出图表6.1保存为图片文件示例:保存图表为PNG文件解释:关键点:6.2保存为高分辨率图片示例:保存为高分辨率图片解释:6.3保存为不同文件格式示例:保存为不同文件格式解释:6.4调整图表的保存尺寸示例:设置图片尺寸并保存解释:6.5解决中文乱码......
  • Unity碰撞入门笔记
    Collider和Collider碰撞条件layer间可碰撞。其中之一为刚体。碰撞函数进入碰撞:OnCollisionEnter(Collisioninfo)碰撞中:OnCollisionStay(Collisioninfo)碰撞离开:OnCollisionExit(Collisioninfo)trigger物体作为trigger将没有碰撞,作为触发器使用。(例如到达点位刷怪)进......
  • 【自用20.】C++析构函数
    作用对象销毁前,做清理工作。具体的清理工作,一般和构造函数对应比如:如果在构造函数中,使用new分配了内存,就需在析构函数中用delete释放。如果构造函数中没有申请资源(主要是内存资源),那么很少使用析构函数。函数名:~类型名没有返回值,没有参数并且最多只能有一个析构函数......
  • 【自用19.3】C++构造函数复盘
    定义一个“人”类#include<iostream>#include<Windows.h>#include<string>usingnamespacestd;//定义一个“人类”classHuman{public://公有的,对外的 voideat();//方法,“成员函数” voidsleep(); voidplay(); voidwork(); stringgetName(); in......