一、C++发展史
- C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士以及其同时与20世纪80年代初在C语言的基础上开发出来的。与C兼容。C++保留了C语言的所有优点,增加了面向对象的机制。由于C++对C的改进主要是增加了适用于面向对象程序设计的:“类”,故它被Bjarne Stroustrup称为”带类的C”,即“C with classes”。后来为了强调它是C的增强版,用了C语言的自加运算符,叫C++。
- 以下是C++的历史版本:
- C++关键字(C++98)
C++关键字一共有63个,分别为:
二、命名空间
在C/C++中,大量存在的变量、函数和类的名称都将存在于全局作用域中,可能导致很多冲突。命名空间用来解决命名冲突的问题。
- 命名空间的定义:namespace关键字
定义命名空间,需要使用namesapce关键字,后面跟命名空间的名字:
namespace N1
{
//1.变量
int a;
//2.函数
int Add(int a,int b)
{
return a+b;
}
//3.命名空间(可嵌套)
namespace N2
{
int b;
int Sub(int a,int b)
{
return a-b;
}
}
}
注意点:1、在同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
2、一个命名空间就定义了一个新的作用域,命名空间中所有的内容都局限于该命名空间中。
- 命名空间的用法:三种方式
//1、加命名空间名称及其作用域限定符
int main()
{
printf("%d\n",N1::a);
printf("%d\n",N1::N2::b);//嵌套
return 0;
}
//使用using将命名空间中成员引入
using N1::b;
int main()
{
printf("%d\n",b>;
return 0;
}
//3、使用using namespace命名空间名称引入
using namespace N1;
int main()
{
Add(10,20);
return 0;
}
三、C++输入输出
//1.C++使用cout进行输出(到控制台),使用cin进行输入(来源于控制台),C的输出输入方式也可以使用;
//2.使用cout输出和cin输入时,必须包含<iostream>头文件;
#include<iostream>
#include<stdlib.h>
//3.cout和cin包含在标准命名空间中,使用时必须包含该命名空间
using namespace std;
int main()
{
int a;
double d;
//4.输入输出更方便,不需要增加数据格式控制;
//cin输入运算符:可以自动识别数据类型
cin >> a;
cin >> d;//输入两个以上的数据时可以用换行隔开,也可以用空格隔开
//cout输出运算符:
cout << "change myself" << endl;
//也可以这样引用命名空间,但没必要
std::cout << "hahaha" << endl;
//cout能自定义输出的格式,包括左对齐、右对齐、数据类型、进制转换等,不需要进行数据格式控制
//例如:
cout << hex << a << endl;//以十六进制输出a,即a输入10,输出为字符a
system("pause");
return 0;
}
四、缺省参数
缺省参数是声明或定义函数时,为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
#include<iostream>
using namespace std;
void TestFunc1(int a = 1)
{
cout << a << endl;
}
//1.全缺省参数
void TestFunc2(int a = 1, int b = 2, int c = 3)
{
cout << a << " " << b << " " << c << endl;
}
//2.半缺省参数
void TestFunc3(int a, int b, int c = 0)
{
cout << a << " " << b << " " << c << endl;
}
int main()
{
cout<<"Change You!"<<endl;
cout<<12<<"."<<12.34<<endl;
//缺省参数
TestFunc1();
TestFunc1(10);
//1.全缺省参数
TestFunc2(10,20,30);//传参时,使用参数默认值
TestFunc2(10,20);
TestFunc2(10);
TestFunc2();//没有传参时,使用参数默认值
//2.半缺省参数:注意:约定从右往左赋缺省值,不能隔着给出
TestFunc3(10,20,30);
TestFunc3(4,5);
return 0;
}
//补充:
//1.缺省参数不能同时在函数声明和定义中出现,只能二者选择其一(最好在设置在函数声明中,可以直观的看出该函数是否设定缺省值)
//2.缺省值必须是常量或全局变量
//3.C语言不支持