浅谈c++的基础知识
<一>命名空间
- 命名空间的作用:
1.名字隔离;
2.防止自定义的变量名与其他库中的发生冲突 - 命名空间的使用
#include<iostream>
using namespace std; //c++标准库,都放入了std这个命名空间
namespace My
{
int a=10;
}
namespace Your
{
int a=20;
}
int a=30;
int main()
{
cout<<a<<endl; //输出结果为30
cout<<My::a<<endl; //输出结果为10
cout<<Your::a<<endl; //输出结果为20
}
<二> 输入输出流
- 标准输入流对象cin
1.cin在程序中代表标准输入设备,通常指键盘。
2.cin必须与运算符”>>”配套使用;该运算符可表示:将从cin(通常指键盘)得到的数值传送给右方指定的对象。且运算符允许输入一连串数据
例如:
int i;
float f;
cin>>i>>f; //其中,i,f必须是基本数据类型,不能是void;且输入数据的时候,系统除了检查空格外,还会检查输入数据是否与变量类型匹配。如输入:38.24 75.37.则得到的结果就不是预想的结果了:i=38,f=0.24(因为系统是根据变量类型来分割输入数据的)
3.输入字符串时,运算符”>>”的作用是:读入后面的非空白字符,直到遇到另一个空白字符为止
(即:输入字符串遇到空格时,就当作本数据输入结束)
例如:
char *str;
cin>>str; //假设输入字符串为:hello world,但输入后str的字符串只有hello,后面的字符串world被略去了
- 标准输出流对象cout
1.cout在程序中代表标准输出设备,通常指屏幕。
2.必须与运算符”<<”配套使用;该运算符可表示:将右方变量或表达式的值写到cout(即:显示在屏幕上)对象中。
int i=10;
int j=20;
float f=1.75862;
cout<<"i+j="<<i+j<<",f="<<f<<'\n'; //该输出程序是由整型表达式、字符串型数据以及浮点型数据组合在一起的语句。编译器根据运算符"<<"右侧变量或常量的类型来决定要调用形参为那种标准类型的运算符重载函数
3.c++中增加了换行操纵符endl,其作用和’\n’一样。
4.对输入输出数据的格式进行控制,setw(n)设置域宽操纵符(控制输出数据的宽度)
<三>函数重载
- 什么是函数重载
函数重载是:c++中允许同一作用域中,可以有多个函数的名字相同,但他们的参数不同(包括参数类型和参数个数) - 为什么c++支持函数重载,而c语言不行
(注:Linux下查看反汇编代码命令:objdump -D a.out)
如上图所示:
c++对函数的修饰规则为:_Z(函数字符个数)(函数名)(函数参数类型简写)
而c语言对函数的修饰规则为:(函数名)
若其他函数调用该函数,c语言中就无法确定唯一的函数地址了,相反c++就可以。
<四>带默认参数值的函数
- 什么是带默认参数值的函数
在定义函数的时候,为一个或者多个形参指定默认值。 - 分类
1.全缺省
2.半缺省(只能缺省右边连续的参数) - 注意
1.在进行函数调用时,编译器按从左向右的顺序将实参与形参结合,若未指定足够的实参,编译器按顺序用函数原型中的默认值来补足所缺少的实参。
2.在函数调用时,若某个参数省略,则其后的参数皆应省略而采用默认值,不允许某个参数省略后,再给其他参数指定参数值。如以下操作
void Test(int i=10,int j=5)
{
cout<<i+j<<endl;
}
main()
{
Test(,20); //不允许这样操作,可以Test();/Test(10);
}