C++ 1 之 冲刺期末不挂科的入门

先来几句废话

来自菜鸟的自术:我是学校学习的C++ 而自学的java 也不知道自己咋想的。全心去学习java了,就把学校的C++ 抛掷脑后了。但是吧,现在java基础语法已经学会了一大部分了,所以想着万一挂科了咋办,所以我又决定花几天学一下C++ 今天第一天,一周学三天。

前言

什么是C++

C++就是C语言的进阶,C++ == C Plus Plus 所以C++ 源程序的后缀为CPP。它既可以像C一样完成C语言的面向过程的程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

C++发展

看图说事
在这里插入图片描述

其实就记住这个C++98 版 特别牛 所以现在都在用这个版本就完了

C++的重要性

学好了能做出撩妹的程序,就能追到小姐姐。学好了能不挂科,学好了能找到好工作。这三点够了。

如何学习C++

好好学就完了。哪里不会就问,哪里不会就扣代码,扣到秃顶也得学会,为了小姐姐,为了钱。有了小姐姐,就不缺对象。有了钱,就可以植发。

C++关键字

众所周知 C语言又32个关键字 而C++ 就牛掰了。他有 63 个 。当然包含了 C语言的关键字。
在这里插入图片描述
当然这些关键字没必要记。就像我们学习C语言似的。学到哪里懂哪里。到那里就懂了。

来一个Hello World!!!

#include<iostream>
using namespace std;

int main()
{
	
	cout << "Hello World!!" << endl;
	return 0;
}

大家看这个代码,就是C++的第一个代码了。我们先看 namespace 关键字。这个关键字的作用就是定义或使用命名空间的。待我们看完博客再返回来看这个程序

命名空间

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

定义一个普通的命名空间

namespace N1
{
	int a = 0;
	int Add(int a, int b)
	{
		return a + b;
	}
}

以上代码就是命名空间的定义了。其实一般情况下 我都叫它为域 定义一个域

命名空间可以嵌套使用

namespace N2
{
	int a;
	int b;
	int Add(int left, int right)
	{
		return left + right;
	}
	namespace N3
	{
		int c;
		int d;
		int Sub(int left, int right)
		{
			return left - right;
		}
	}
}

看如上代码,其实就是N3 域嵌套在了N2 域内,当然这里可以无限嵌套。当然不建议嵌套太多。

命名空间使用

在这里插入图片描述
在这里我们直接使用a会出现报错现象,为什么能识别呢?下面我看解释,就可以知道了。首先你输出时直接使用A 就像在结构体中直接定义 int a = 0 ; 而在主函数内也是一样不可以使用,是不是,这说明不在一块区间。找不到。那么怎么使用才是正确的呢?有以下三种方法。

方法一:
 加命名空间名称及作用域限定符

这句话的意思只能用代码解释了
在这里插入图片描述
这样是不是就没有红色下划线了。就正确了,在这里::叫做域修饰符,也就是调用N域中的a;
当然这样是有缺点的 ,比如 每次使用都得调用,是不是会非常麻烦。下面看方法二。

方法二:
 使用using namespace一口气把命名空间中所有的成员引入
using namespace std;

比如这样。就会变得特别简单,,当然在这里 你如果一下子把标准库std空间中的所有都引入了呢? std库中有那些东西都不知道 是不是会出现使用的库多了,又会造成命名冲突。那么这两种方法 都出缺点,有没有第三种方法呢?有的。第三种方法叫做部分引入

使用using namespace 命名空间名称引入

在这里插入图片描述
比如这样。当然平时在使用的时候 第一种方法是使用的最多的。只是我们平时比较懒,所有都喜欢第二种,

C++输入&输出

新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物,
那C++是否也应该向这个美好的世界来声问候呢?我们来看下C++是如何来实现问候的。

#include<iostream>
using namespace std;
int main()
{
 cout<<"Hello world!!!"<<endl;
 return 0; }

说明:

  1. 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。
    注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。
  2. 使用C++输入输出更方便,不需增加数据格式控制,比如:整形–%d,字符–%c
#include <iostream>
using namespace std;
int main()
{
 int a;
 double b;
 char c;
 cin>>a;
 cin>>b>>c;
 cout<<a<<endl;
 cout<<b<<" "<<c<<endl;
 return 0; }

看C++ 的输入和输出会不会就比C语言好多了。简单到爽啊!!
在这里再回过头去看Hello World 程序。
是不是发现自己又懂了

缺省参数

大家知道什么是备胎吗?
在这里插入图片描述
C++中函数的参数也可以配备胎。

缺省参数概念

缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。 当然这里也有称其为默认参数的。

void TestFunc(int a = 0)
{
cout<<a<<endl;
}
int main()
{
TestFunc(); // 没有传参时,使用参数的默认值
TestFunc(10); // 传参时,使用指定的实参
}

就像这样。没有参数是。a的值为0 有参数时 a 的值为传的参数。

缺省参数分类

在这里缺省参数分为 全缺省参数和半缺省参数

全缺省参数
void TestFunc(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}

就像这样 所有的形参都有默认参数,也就是 在使用的时候可以不穿参数就可以调用这个函数,这就叫做全缺省参数,当然在传一个参数的时候 就是把a 的值修改,两个则是修改b

半缺省参数
void TestFunc(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}

在这里 假如第二个有默认参数。则第二个之后都要有默认参数,因为 如果传值传一个,测试赋值给第一个。

注意:
  1. 半缺省参数必须从右往左依次来给出,不能间隔着给
  2. 缺省参数不能在函数声明和定义中同时出现
//a.h
void TestFunc(int a = 10);
// a.c
void TestFunc(int a = 20)
{}
// 注意:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那
//个缺省值。
  1. 缺省值必须是常量或者全局变量
  2. C语言不支持(编译器不支持)
    缺省参数(默认参数就介绍到这里了。)

函数重载

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

int Add(int left, int right)
{
return left+right;
}
double Add(double left, double right)
{
return left+right;
}
long Add(long left, long right)
{
return left+right;
}
int main()
{
Add(10, 20);
Add(10.0, 20.0);
Add(10L, 20L);
return 0;
}

在这里。重载时调用他是根据字面意思调用,也就是比如 10 默认为int型常量,就去找int 型的
就像上面的实现方法似的,就可以实现函数的重载了,其实这里没什么主要记住,上面的表粗部分。

void f(int a, int b, int c = 1)
{}

void f(int a, int b)
{}

看代码。如上构成重载嘛。答案是构成重载。但是他是一个坑。
如果我们传两个参数他就会报错,因为两个函数都可以被调用,不知道调用哪一个,成功把编译器搞蒙了。

总结

这就是今天学习的知识了。大家一起努力咯!!!!!!

关于小编

小编是一名正在奋斗的大一小骚年,希望能与大家一起学习哦。在编程的路上也希望能有朋友一起学习!!!这篇博客 是小编自己理解的写的,所以,有些地方可能有所不足,忘大家给予指点,错的越多后期越吃香。
小编qq号:2206730228
希望能与大家一起学习哦!!!!!!

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未然-king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值