C++ 入门
先来几句废话
来自菜鸟的自术:我是学校学习的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; }
说明:
- 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。
注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。 - 使用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;
}
在这里 假如第二个有默认参数。则第二个之后都要有默认参数,因为 如果传值传一个,测试赋值给第一个。
注意:
- 半缺省参数必须从右往左依次来给出,不能间隔着给
- 缺省参数不能在函数声明和定义中同时出现
//a.h
void TestFunc(int a = 10);
// a.c
void TestFunc(int a = 20)
{}
// 注意:如果生命与定义位置同时出现,恰巧两个位置提供的值不同,那编译器就无法确定到底该用那
//个缺省值。
- 缺省值必须是常量或者全局变量
- 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
希望能与大家一起学习哦!!!!!!