HQYJ学习随笔——C++(一)

目录

文章目录

前言

一、C++是什么,和C有何区别?

二、C++使用

1.C++中的函数

2.命名空间

3.函数重载

4.函数的引用、



前言

C++ 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。


一、C++是什么,和C有何区别?

C++(C plus plus)是对C语言的扩充,C++是在C语言的基础上扩充得来的。当然,这并不是说C++就一定比C语言高级,两者的编程思维不同,应用的邻域也不同。简单的说,C语言是一种面向过程的语言,而C++是一种面向对象的语言。(并不是说C语言就一定不能面向对象)

面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一步一步的实现,最后在一个个调用来实现程序的运行。

面向对象:面向对象编程就是将一个程序分解成一个个对象,每个对象都有自己的行为,当我们需要它做某个事时就调用相应的对象。

面向对向不是很好口头解释和理解,举2个例子;

1.洗衣服时

面向过程:放入衣服后,加洗衣粉,清洗衣服,观察是否干净,继续清洗,直到干净后取出。

面向对象:把衣服放入洗衣机,打开洗衣机,洗好后取出。(这里洗衣机就是对象)。

2.象棋系统

面向过程:开始游戏,红棋先走,绘制画面,判断输赢,轮到黑棋,绘制画面,判断输赢,重复前                     面的过程,输出最终结果。

面向对象:双方(两者的行为是一样的)、棋盘系统(负责绘制画面)、规定系统(规定输赢、犯规等)、输出系统(输出赢家)。

C语言更适合处理较小规模的程序,,对于大规模的程序,C语言就不是很适合了。

二、C++使用

1.C++中的函数

1.带默认值的函数

在C++中,带默认值的函数即使不传参也会按默认值参数运行。(等号赋值)

可以所有都带默认值,也可以只设置部分参数。(只有部分参数带默认值时,带默认值的必须放在参数栏末尾)

默认参数只需要在声明或定义时说明,不需要2者都说明。

2.带占位参数的函数

主要是为了函数以后的扩展功能,解决C中不规范的的函数传参。

在定义的时候只写类型,不写变量名,故使用者无法使用这个参数,但会函数的使用没有影响。

2.命名空间

用于解决符号冲突

namespace <name>{

<代码>

}
例如
namespace my{
int a=10;
}

int main
{
cou<<my::a<<endl;
return 0;
}

全局引用

using namespace <命名空间名>

一个命名空间可以取多个别名,使用起来与原名无区别。

匿名空间:定义时可不需要取别名,可以直接使用里面的函数或变量,但只在当前文件生效。

3.函数重载

指在同一作用域内,可以有一组同名函数名,不同参数的函数

通常用来命名一组功能相似的函数,这样可一减少函数名的数量提高程序的可读性。

规则:

1.函数名必须相同。

2.参数列表必须不同。(个数,类型,排列顺序)

3.返回值可同也可不同,但仅返回值类型不同不足以成为函数的重载。

底层原理:编译器会将重载函数设置成不同函数名,根据参数与个数进行匹配。

4.函数的引用、

j简化了指针操作

引用是给一个变量或对象取别名,对引用操作与对其绑定的操着一样。

声明的同时必须初始化,且初始化后不能改变引用空间的位置。

两者类型必须一致。

不能将已有的引用名作为其他变量或对象的名字或别名。

原理:引用时编译器会在底层生成个指针并自动进行*运算。

主要用于函数的传参。

new:申请内存并初始化。

delete:释放内存并销毁对象。

int *p=new int[5];
delete [] p;


int *p=new int;
delete p;
p=NULL;

与malloc/free区别:

1.malloc/free是标准库函数,new./delete是C++操作符。

2malloc/free需要手动计算类型和大小,且返回void*,而new./delete可以自己计算类型和大小,根据类型返回相应的指针类型。

3.malloc/free只负责分配/释放空间,new./delete会调用构造函数与析构函数,用于初始化对象和销毁对象。

new./delete的实现是基于malloc/free的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值