本文简要的讲述C++入门的一些知识包括:C++关键字、命名空间、C++输入与输出、缺省参数以,以及函数重载。
1、命名空间
// 在C中会遇到的一个问题,因此在c++中提出了命名空间这个概念
#include <stdio.h>
#include <stdlib.h>
#include "Queue.h"
#include "List.h"
// 在C语言中有局部域/全局域
// 1、使用 2、声明周期
// error C2365 : “rand”: 重定义;以前的定义是“函数”
int rand = 10;
int a = 10;
void func()
{
int a = 20;
printf("%d", a);
printf("%d", ::a);// 域作用限定符
}
int main()
{
func();
printf("%d", List::rand);
return 0;
}
// 命名空间使用关键字namespace,后面跟命名空间的名字
// 命名空间中可以定义变量/函数/类型
// 命名空间中可以嵌套命名空间
// 同一个工程中存在多个相同名称的命名空间,编译器最后会合成一个命名空间
namespace zyq
{
int rand = 10;
int func()
{
return 0;
}
namespace zyq2
{
int rand2;
}
}
// 命名空间的使用
int main()
{
// 命名空间的三种使用方式
// 1、加命名空间名称及作用域限定符
zyq::rand;
zyq::func();
zyq::zyq2::rand2;
// 2、使用using将命名空间中某个成员引入
using zyq::rand;
rand;
// 3、使用using namespace 命名空间名称引入
using namespace zyq;
rand;
func();
zyq2::rand2;
}
2、c++的输入与输出
//std是c++标准库的命名空间,c++将标准库的定义实现都放到这个命名空间中
#include <iostream>
using namespace std;
int main()
{
int a;
double b;
char c;
// 可以自动识别变量的类型
cin >> a;
cin >> a >> b >> c;
cout << a << b << c << endl;
return 0;
}
3、缺省参数
#include <iostream>
using namespace std;
// 全缺省参数
void func(int a = 10, int b = 20, int c = 30)
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << endl;
}
// 半缺省参数
// 半缺省参数必须从右往左依次给出,不能间隔着给
// 缺省参数不能在函数声明和定义中同时出现
// 缺省值必须是常量或者全局变量
// C语言不支持(编译器不支持)
void func2(int a, int b = 20, int c = 30)
{
cout << a << endl;
cout << b << endl;
cout << c << endl;
cout << endl;
}
int main()
{
func(1, 2, 3);
func(1, 2);
func(1);
func();
func2(1, 2, 3);
func2(1, 2);
func2(1);
//func2();
}
4、函数重载
//函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
// 2、参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
int main()
{
Add(10, 20);
Add(10.1, 20.2);
f();
f(10);
f(10, 'a');
f('a', 10);
return 0;
}