挺久了没写过博客了,都有点不好意思,感觉对不起半年年的自己了。
说来惭愧,现在才开始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也就变了。
当然引用的作用很大,远不止于此,但那就是流道之后再写,今天先到这里。