首先,c++是完全兼容C语言的,C语言的语法完全可以放到c++中使用
c++输入输出
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
return 0;
}
cin和cout是全局的流对象,endl表示换行输出(用’\n’也行),
<< 是流插入运算符,>>是流提取运算符
使用cin和cout可以自动识别类型,不像printf()和scanf()那样需要手动控制格式
命名空间
命名空间是为了解决变量、函数、类的命名冲突问题
命名空间的定义
命名空间本质上是定义了一个新的作用域
命名空间可以定义变量、函数和类型
namespace test
{
int rand = 0;
int Add(int x, int y)
{
return x + y;
}
}
命名空间还可以嵌套
namespace test1
{
int a = 0;
namespace test2
{
int b = 0;
}
}
同一工程文件允许同一名称的命名空间,但最后编译器会合并为同一个命名空间
命名空间的使用
#include <stdio.h>
namespace test
{
int a = 0;
int b = 1;
int Add(int x, int y)
{
return x + y;
}
struct Node*
{
int val;
struct Node* next;
}
}
// 第一种,加命名空间名称及作用域限定符
int main()
{
printf("%d\n", test::a);
return 0;
}
// 第二种,使用using将命名空间某个成员引入
using test::b;
int main()
{
printf("%d\n", test::a);
printf("%d\n", b);
return 0;
}
// 第三种,使用using namespace 将命名空间所有成员引入
using namespace test;
int main()
{
printf("%d\n", a);
printf("%d\n", b);
printf("%d\n", Add(1, 2));
return 0;
}
!!在大型项目中不要全部展开命名空间!!
缺省参数
缺省参数是在声明或定义函数时为函数参数指定的一个缺省值(默认值),但默认是声明函数时出现缺省值,定义函数时不出现缺省值
缺省参数分类
全缺省参数
void Func(int a = 10, int b = 20, int c = 30)
{
cout << "a = " << a << endl;
}
半缺省参数
void Func(int a, int b, int c = 10)
{
count << "c = " << c << endl;
}
!!注意!!
- 半缺省必须从左往右来给出,不能间隔着给
- 缺省参数不能在声明和定义同时出现
- 缺省值必须是常量或者全局变量
函数重载
函数重载的类型
函数重载简单来讲就是一词多义,是函数的一种特殊情况,c++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的参数个数或参数类型或类型顺序不同
#include <iostream>
using namespace std;
// 1、参数类型不同
int Add(int x, int y)
{
return x + y;
}
double Add(double x, double y)
{
return x + y;
}
// 2、参数个数不同
void Func(int a)
{
cout << "a" << endl;
}
void Func()
{
cout << "a" << endl;
}
// 3、参数顺序不同
void Func(int a, double b)
{
cout << "a" << endl;
}
void Func(double b, int a)
{
cout << "a" << endl;
}
c++支持函数重载的原因
在c++中,在链接时,对于Add()
函数,不同的编译器会有不同的函数名修饰规则,以linux的g++为例,函数名修饰规则为【_Z+函数长度+函数名+参数类型首字母】,所以程序能够识别同名函数