【C++】入门基础知识
(一)命名空间
命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。它相当于一个更加灵活的文件域(全局域),可以用花括号把文件的一部分括起来,并以关键字namespace开头给它起一个名字:
namespace name1
{
int a = 0;
}
namespace name2
{
{
int a = 1;
}
name1::a = 3;
name2::a = 4;
int a = 0;
}
namespace name2
{
int a = 1;
}
name1::a = 3;name2::a = 4;
命名空间的作用:解决全局命名冲突的问题。标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符: using namespace std;就可以直接使用标准C++库中的所有成员。或者 std::成员的方式也可以使用C++库里的成员。(::是作用域解析符 )
namespace std // std是C++标准库的名字空间
{
// 标准库成员}
实现一个简单的C++程序 :
#include <iostream>
using namespace std;
int main ()
{
std::cout<<"hello world"<<std::endl;
return 0;
}
(二)C++基本的输入输出流
cout是标准输出流对象,<< 是输出操作符; cin是标准输入流对象,>>是输入操作符; endl是换行操作符;他们都属于C++标准库,所以都在std的名字空间里面。
#include <stdio.h> int main ()
{
int i2 = 1; double d2 = 2.22;
printf ("c type: int->%d, double->%f\n" , i2, d2);
printf("please input int and double:" ); scanf ("%d, %f" , &i2, &d2);
printf ("c type: int->%d, double->%f\n" , i2, d2);
}
C语言的格式控制输出不同的格式,C++也可以:
(三)重载
在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如希望交换两个变量的值,这两个变量有多种类型,可以是 int、float、char、bool 等,我们需要通过参数把变量的地址传入函数内部。在C语言中,程序员往往需要分别设计出三个不同名的函数,但在C++中,这完全没有必要。C++ 允许多个函数拥有相同的名字,只要它们的参数列表不同就可以,这就是函数的重载(Function Overloading)。借助重载,一个函数名可以有多种用途。
例:void print(int a)
{
printf("void print(int a)\n");
}
void print(string a)//参数类型不一样
{
printf("void print(string a)\n");
}
函数的重载的规则:
- 函数名称必须相同。
- 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。
- 函数的返回类型可以相同也可以不相同。
-
仅仅返回类型不同不足以成为函数的重载。
C++ 是如何做到函数重载的
-
C++代码在编译时会根据参数列表对函数进行重命名,当发生函数调用时,编译器会根据传入的实参去逐个匹配,以选择对应的函数,如果匹配失败,编译器就会报错,这叫做重载决议(Overload Resolution)。从这个角度讲,函数重载仅仅是语法层面的,本质上它们还是不同的函数,占用不同的内存,入口地址也不一样。
(四)C++缺省参数
所谓缺省参数,顾名思义,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,你就无须指定该参数。缺省参数使用主要规则:调用时你只能从最后一个参数开始进行省略,换句话说,如果你要省略一个参数,你必须省略它后面所有的参数,即:带缺省值的参数必须放在参数表的最后面。 缺省值必须是常量。