目录
一. 关键字
二. 命名空间
三. 输入&输出
1.输出
2.输入
四. 缺省参数
1.全缺省参数
2.半缺省参数
五. 函数重载
1.类型
2.原理
简单了解一下都有哪些关键字
在c语言的学习之中,我们知道,在同一个作用域中,我们无法使用相同的名字进行命名。也无法使用库中的名字进行命名。
而在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存
在于全局作用域中,很有可能会导致冲突。而我们可以使用命名空间来解决这个问题,使用命名空间的目的是对标识符的名称进行本地化,
以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。
namespace szt
{}
例如,我们可以定义一个名为szt的命名空间
而命名空间中可以定义变量/函数/类型
namespace szt
{int rand=10;//变量int add(int a,int b)//函数{return a+b;}struct sList//类型{int cal;struct sList* next;}
}
同时,命名空间可以嵌套使用
namespace szt1
{int rand=10;namespace szt2{}
}
而在同一个工程之下,同名的命名空间会被合并。例如头文件和源文件中的同名命名空间。
而若是想要使用命名空间的成员,有3种方法
1.前面加命名空间名称以及作用域限定符
namespace szt
{int a=10;//变量int add(int a,int b)//函数{return a+b;}struct sList//类型{int cal;struct sList* next;};
}int main()
{struct szt::sList SL;printf("%d\n",szt::a);
}
2.使用using引入某个成员
using szt::a;int main()
{printf("%d\n",a);
}
3.使用using namespace 命名空间名称 引入
using namespace szt;int main()
{printf("%d",a);
}
而第一种方法能够做到最好的隔离,但使用较为麻烦
第二种方法也能做到较好的隔离,在使用一些常用的成员时较为方便
第三种方法最方便,但会导致隔离失效,引发一些问题
例如在我们常见的一些代码中,在引用输入输出流的头文件后
#include
往往会使用第三种方法来展开一个std命名空间(C++库的实现定义)
using namespace std;
这种方法,在我们自己练习时会很方便,但若是在公司中进行大的项目的实现时,不要这样使用。
我们可以先实现一下我们的老朋友Hello world
#include
using namespace std;
int main()
{cout<<"Hello world!!!"<
在其中,iostream 和std 我们在上面已经提到过,这里补充一点,早期我们直接引用头文件即可
#include
而后来,为了与c语言进行区别,我们便如上述代码样式进行头文件的引用。
cout用于输出,<<为流插入运算符,endl表示换行输出
因此,我们也可以这样
cout<<"Hello world!!!\n";
而当输出存在参数时,cout能做到自动识别变量类型,并识别浮点数的小数位
#include
using namespace std;
int main()
{float a=1.23; char b='b';cout<
在C++中,我们使用cin进行输入,同样,cin也能自动识别变量类型
int main()
{int a;double b;char c; cin>>a;cin>>b>>c;return 0;
}
而>>是流提取运算符
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
而缺省参数分为全缺省参数,半缺省参数
字面意思,便是所有参数都有缺省值
void print(int a = 10, int b = 20, int c = 30)
{cout<<"a = "<
而在存在部分的参数时,严格遵循从左向右的原则
无法做到c存在参数而a,b没有参数的类似的情况
print(1, ,3);//error
其实就是部分缺省
而在半缺省参数中,我们必须严格遵循从右往左依次给出
void print(int a, int b, int c = 30)//right
{cout<<"a = "<
注意:缺省值必须是常量或者全局变量
缺省参数不能在函数声明和定义中同时出现,而别人在查看代码功能时,往往会去首先查看头文件来了解各个函数的功能,所以我们一般将缺省参数放在函数的声明之中,也就是头文件中。
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这
些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型
不同的问题。
参数类型不同
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;
}int main()
{cout<
参数个数不同
int Add(int num1, int num2, int num3)
{cout << "int Add(int num1, int num2, int num3)" << endl;return num1+num2+num3;
}int Add(int num1, int num2)
{cout << "int Add(int num1, int num2)" << endl;return num1+num2;
}int main()
{cout<
参数类型顺序不同
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()
{f(1, 'a');f('a', 1);return 0;
}
而单纯的返回值不同无法作为函数重载的条件。
不会,之后再补充
上一篇:数据的存储(2)大小端字节序存储
下一篇:15.2 浏览器中的进程