C++第一节课

挺久了没写过博客了,都有点不好意思,感觉对不起半年年的自己了。

说来惭愧,现在才开始C++入门,五个月的时间我都找各种理由让自己离开了学习编程。不过最后目的是考408,虽然说用不上C++,但是总归还是要学的,不多说啥了,第一堂课学了挺多东西的,来吧。

基础知识

C++历史

我只记得本贾尼老爷子这个名字,他是C++之父。

然后大版本经历了C98,C11等,我们主要也是学习这个。

C++第一个程序

cpp 复制代码
#include<iostream>
using namespace std;

int main()
{
	cout << "hello world!" << endl;
	return 0;
}

对比于C语言这里区别是头文件的 I/O 输入输出从<stdio.h>变成了<iostream>,

然后 namespace 叫做 命名空间,主要作用是给名字划分区域,避免重名冲突。

cpp 复制代码
using namespace std;

使用上一面那一行代码最大的作用,也是唯一的作用:偷懒。是的,小白新手练习使用是可以的,"用到的名字,如果找不到,就去 std 这个命名空间里找。"

但是以后不推荐使用,很容易坑人。

下面主要讲一下 namespace 的实际作用:

cpp 复制代码
#include<iostream>
using namespace std;

namespace gjr
{
	int a = 0;
	int b = 1;
}

int main()
{
	int a = 2;
	int b = 3;
	cout << gjr::a << endl;
	cout << a << endl;
	return 0;
}

就是这样,两个都叫a的整型可以都存在,只要不放在同一个域里面。然后使用**::**域操作符来访问域里面的成员。

C++的输入和输出

因为C++完全包含C语言的原因,这里也可以使用printf 和 scanf 但是以后应该还是使用C++专门的cout 和 cin

哦,还得加上<< 和>> 。

缺省参数

关于缺省参数就是本贾尼祖师爷看函数传参不爽了。
缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参
则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。

直接举例:

cpp 复制代码
int Add(int a = 5,int b = 6, int c=6)
{
	return a + b + c;
}

int main()
{
	int a = 2;
	int b = 1;
	int c = 3;
	
	int d = Add(a, b, c);
	int e = Add(a);
	cout << d << endl;
	cout << e<< endl;
	return 0;
}

显然 ,按照原理这里输出的两个结果是6和14.

注意:带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

函数重载

所谓的函数重载就是两个函数同名并且一起出现,这在C语言是不可能的,但是C++是可以实现的。比如:

cpp 复制代码
int Add(int a,int b)
{
	return a + b;
}

int Add(double a, double b)
{
	return a + b;
}
int main()
{
	int a = 3;
	int b = 2;

	double c = 2.5;
	double d = 3.5;

	int f = Add(a, b);
	int e = Add(c, d);
	cout << f << "  " << e << endl;
	return 0;
}

就是这样,可以出现两个Add,但是参数的类型不同,

函数重载的的条件不仅是参数的类型不同,参数的数量不同 ,还有函数的类型不同都能满足条件。

引用

第一节课的最后一个知识点,就是引用。

引用的作用就是给对象起别名,比如把"林冲"改名为"豹子头"本质还是同一个对象,语法上不开新空间(虽然我们知道底层是指针,但就理解为改别名即可,因为想底层会搞复杂的)

来个最简单的例子:

cpp 复制代码
int main()
{
	int a = 0;
	int& b = a;
	b = 1;
	std::cout << a << std::endl;

	return 0;
}

结果输出是1,,是的,b是a的别名,改变b的值,a也就变了。

当然引用的作用很大,远不止于此,但那就是流道之后再写,今天先到这里。

相关推荐
UIU1142 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
“AI国潮设计-小江”2 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
小王C语言2 小时前
Qt常用控件:容器类控件,标题分组框、标签页(浏览器标签)
开发语言·qt
TMedical3 小时前
MedPlanning 截骨模拟矫形功能
c++·图像处理·人工智能·qt·健康医疗
我是唐青枫3 小时前
Kotlin Delegation 委托详解
开发语言·kotlin
qq_406981033 小时前
共享变量一 关于extern与const
开发语言·c++
FRing034 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
小嘉丶学长5 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
迪菲赫尔曼5 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测