C++ 比 C语言的新增的特性 1

1. C++是C的增强

1.1 C++是静态类型的语言,具有严格的数据类型检查

1.1.1 c

因为const修饰的变量不允许修改,但是只给了警告,不严谨

const int a=10;a=20;  //报错int *p=&a;*p=20;//a的值?
test1.c:6:9: warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]6 |  int *p=&a;|         ^

1.1.2 c++

c++直接报错

const int a=10;a=20;  //报错int *p=&a;*p=20;
est2.cpp: In function ‘int main()’:
test2.cpp:6:9: error: invalid conversion from ‘const int*’ to ‘int*’ [-fpermissive]6 |  int *p=&a;|         ^~|         ||         const int*

2. C++结构大致解读

2.1 iostream库文件无后缀

C++如果包含的头文件不加.h表示是属于C++标准库里的文件

加.h,表示是用户自己写的头文件

iostream是用双引号扩起来,编译器首先是在当前工程文件下寻找该库文件,然后再从标准库中找该文件

iostream是用<>括号括起来,编译器首先是从标准库中找该文件,再从当前工程找该文件

3.  新增变量引用

3.1 引用符号:

&(在C语言表示取地址,在C++里是另外一层表示引用)

引用:是给已经存在的变量取一个别名,称为“引用”,别名和原来的变量名是同一个

3.2 引用的声明:

数据类型(内置的数据类型或自定义的类类型)  &    别名  =  已经存在的变量名 ;

3.3 例

share1中

test1.cpp
#include <iostream>
using namespace std;int main()
{int a = 10;int &b = a;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;cout<<"a的地址="<<&a<<endl;cout<<"b的地址="<<&b<<endl;cout<<"hello world"<<endl;return 0;
}

3.4  常见的面试题:

3.4.1 引用和指针的区别?

(1)编译器会为指针变量申请另外的空间,但是编译器不会为引用类型的变量额外开辟空间

(2)指针变量存在时可以不用进行初始化,但引用变量旦存在必须进行初始化工作

(3)指针变可以指向多个已经存在的变量,引用变是对应个已经存在的变量(一对应)

3.5 通过函数交换两个变量的值

share1中

test3.cpp
#include<iostream>
using namespace std;void swap(int &a,int &b){int tmp = a;a = b;b = tmp;}
int main()
{int a  =10;int b = 20;swap(a,b);cout<<"a="<<a<<" b="<<b<<endl;return 0;
}

4. 函数重载

新增了函数重载以及运算符重载

4.1 函数重载

概念:函数名相同,函数的参数个数、顺序、类型不同,就称为“函数重载”

注意点:

函数重载是与函数的返回值无关(即返回值不同不构成重载)

例如:
C语言:void  function(int a   ,  char  b){}void  function(int a){}  //报错:标识符重名的错误
C++:void  function(int a   ,  char  b){}void  function(int a){}  //正确

4.2 练习

test4.cpp

#include<iostream>
using namespace std;//函数重载void swap(int &a,int &b){int tmp = a;a = b;b = tmp;
}//参数不同包括类型不同可以重载
void swap(){cout<<"hello"<<endl;}//返回值类型不同,不能重载
// int swap(int &a,int &b){
//     cout<<"hello"<<endl;// }int main()
{int a  =10;int b = 20;swap(a,b);cout<<"a="<<a<<" b="<<b<<endl;swap();return 0;
}

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

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

相关文章

解决Qt“报无法定位程序输入点xxx于动态连接库“问题

今天&#xff0c;在使用QtVS2019编译工程时&#xff0c;弹出"无法定位程序输入点xxx于动态链接库"问题&#xff0c;如图(1)所示&#xff1a; 图(1) 报"无法定位程序输入点xxx于动态链接库"问题 出现这种问题的原因有很多&#xff1a; (1) 工程Release/Deb…

[2023-年度总结]凡是过往,皆为序章

原创/朱季谦 2023年12月初&#xff0c;傍晚&#xff0c;在深圳的小南山看了一场落日。 那晚我们坐在山顶的草地上&#xff0c;拍下了这张照片——仿佛在秋天的枝头上&#xff0c;结出一颗红透的夕阳。 这一天很快就会随着夜幕的降临&#xff0c;化作记忆的碎片&#xff0c;然…

pci_enable_device()

前言 在 PCI 总线下&#xff0c;当 PCIe 设备和 PCIe 驱动匹配后&#xff0c;就会执行驱动的 probe() 函数来初始化设备&#xff0c;以让设备正常运行。 在 probe() 函数中&#xff0c;最先做的事情就是执行 pci_enable_device() 来使能设备。如果设备都无法使能的话&#xff…

验证码服务使用指南

验证码服务使用指南 1 部署验证码服务 1.1 基础环境 Java 1.8 Maven3.3.9 1.2 安装Redis 参考“Redis安装指南” 1.3 部署验证码服务 1.3.1 下载源码 使用git从远程下载验证码服务代码(开源)。 1.3.2 使用idea打开项目 使用idea打开上一步下载的sailing目录&#xf…

Linux驱动

字符设备驱动模型 在字符设备中使用struct cdev这种结构来描述设备。 应用程序&#xff1a;读写文件&#xff0c;点灯&#xff1b;获取按键。用一些接口调用驱动程序去实现一些引用。 open这些函数&#xff0c;是C库实现的。从而进入内核&#xff0c;C库怎么进入内核&#xf…

udp多播/组播那些事

多播与组播 多播&#xff08;multicast&#xff09;和组播&#xff08;groupcast&#xff09;是相同的概念&#xff0c;用于描述在网络中一对多的通信方式。在网络通信中&#xff0c;单播&#xff08;unicast&#xff09;是一对一的通信方式&#xff0c;广播&#xff08;broad…

IDEA相关操作

目录 连接MySQL IDEA配置Maven 配置全局Maven 导入Maven项目 方法一 方法二 安装Mybatisx插件 连接MySQL 填写user和Password之后测试连接 如果是第一次连接需要联网下载数据库连接驱动&#xff0c;安装提示下载即可 如果显示如下错误需要更改时区 Server returns …

count distinct在spark中的运行机制

文章目录 预备 数据和执行语句Expand第一次HashAggregateShuffle and Second HashAggregate最后结果性能原文 预备 数据和执行语句 SELECT COUNT(*), SUM(items), COUNT(DISTINCT product), COUNT(DISTINCT category) FROM orders;假设源数据分布在两个1核的结点上&#xff0…

【DevOps 工具链】软件版本号命名规范 - 3种规则(读这一篇就够了)

文章目录 1、简述2、常见软件的版本号命名规则3、版本号命名规范整理3.1、XYZ/MMP3.1.1、规则3.1.2、确定3.1.3、举例3.1.4、详细规则 3.2、XYZD/MMPD3.3、VRC3.3.1、规则3.3.2、对"Vxxx"的说明3.3.3、对"Rxxx"的说明3.3.4、对"LLL"的说明3.3.5、…

算法导论复习(四)主方法的专题

主方法我们要记住的是什么呢&#xff1f;

Java原来可以这么玩!CV实现多张图片生成视频

前言 比如我像将几张图片变成一个视频的形式发不到短视频平台&#xff0c;虽然短视频平台也有上传图片变成视频的功能&#xff0c;但是我想要具体控制每张图片显示多久后切换到下一个图片&#xff0c;短视频平台目前无法实现&#xff0c;于是乎&#xff0c;我用java代码实现了…

2023版本QT学习记录 -6- UDP通信之UDP接收端

———————UDP接收端——————— &#x1f384;动图演示 &#x1f384;发送端通信步骤思维导图 &#x1f384;添加组件 QT core gui network&#x1f384;添加头文件 #include "qudpsocket.h"&#x1f384;创建接收对象 QUdpSocket *recvsocket;&…