1.命名空间
2.C++基本的输入输出流
3.重载(C++为什么支持重载?)
4.C++缺省参数
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
1.命名空间 namespace
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
使用C++
标准程序库的任何标识符时,可以有三种选择:
1>直接指定
标识符。 输出为std::cout << a << std::endl;
2>
使用using
关键字
。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout << a << 3.4 << endl;
3>最方便的就是使用
using namespace std; 例如: using namespace std;这样命名空间std内定义的所有
标识符都有效(曝光)。就好像它们被声明为
全局变量一样。那么以上
语句可以如下写: cout <<a<< endl;
1>
#include <iostream>
int a = 10;
int main()
{
std::cunt<<a<<std::endl;
return 0;
}
2>
#include <iostream>
using std::cout;
using std::endl;
using std::cin;
int a = 10;
int main()
{
cout<<a<<endl;
return 0;
}
3> using namespace std
#include <iostream>
using namespace std;
int a = 10;
int main()
{
cout<<a<<endl;
return 0;
}
4>命名空间namespace,可以避免导致全局命名冲突问题.
#include <iostream>
using namespace std;
namespace A1//命名空间A1
{
int a = 20;
int b = 10;
}
int a = 10;//全局变量
int main()
{
cout<<A1::a <<endl;//输出命名空间A1中a的值
cout<<::a <<endl;//输出全局变量a的值
cout<<a<<endl;//就近输出a的值 即全局变量a
return 0;
}
运行结果:
5>定义全局变量时可以用命名空间 即using namespace 命名空间名(相当于将命名空间的变量在全局变量中拷贝了一份)
#include <iostream>
using namespace std;
namespace A1
{
int a = 10;
}
using namespace A1;
int main()
{
cout<<::a <<endl;//即输出全局变量中a的值
return 0;
}
6>结构体名字相同,用命名空间定义,则可以避免重复定义
namespace A1
{
struct ListNode
{
};
}
struct ListNode
{
};
7>嵌套
namespace A1
{
int a = 10;
namespace A2
{
int a = 20;
}
}
2.C++基本的输入输出流
1>输入cin>>a
#include <iostream>
using namespace std;
int main()
{
int a = 10;
cin>>a;//相当于C语言中的scanf("%d",&a);这的a直接被引用,不用取地址
cout<<a<<endl;
return 0;
}
2>输出:cout<<a<<endl;
C++支持连续输入输出 eg:cout<<a<<b<<c<<endl;
int main()
{
int a = 10;
double b = 2.22;
cout<<"C++type:"<<"int-> "<<a<<"double-> "<<b<<endl;
return 0;
}
运行结果:
3.重载(C++为什么支持重载?)
函数重载就是指:在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同或类型不同或参数顺序不同),返回值可同可不同。
C语言:变量定义必须在域的开始,且不能出现两个相同的函数名。
C++:变量定义可以在任意位置,且可以有两个相同的函数名。(函数重载)
为什么c语言不支持重载而c++支持重载?
主要原因是c和c++的编译器在对函数进行重命名的时候用的方法不一样,比如同一个函数 int ADD(int a,int b)
C编译器处理后 将这个函数重新命名为 _ADD
C++编译器处理后,将这个函数重新命名为 _ADD_int_int
所以说函数重载的本质是:参数列表不同:1参数的类型不同 2参数个数不同3参数的顺序不同。 这三点引起的编译器修饰函数名的不同
4.C++缺省参数
对于C++的缺省参数的使用我们应该注意以下几点:
1>缺省参数不能出现在函数指针、函数引用以及typedef中
2>缺省参数可以在不同的声明中逐步给出
3>不同作用域的声明中定义的缺省参数是独立的,互不影响;
4>同一作用域的声明中不能重复定义同一个参数的缺省值。
5.指针和引用(概念、使用方法、做参数、做返回值的作用,指针和引用的区别)
指针 : 指向一块内存,它的内容是所指内存的地址;int a = 10;
int *p = &a;
引用 :是某块内存的别名.
int a = 10;
int & b = a;
int &c = b;//b,c都是a的别名
区别:
1. 指针是一个实体,而引用仅是个别名;
2. 引用使用时无需解引用(*),指针需要解引用;
3. 引用只能在定义时被初始化一次,之后不可变;指针可变;
4. 引用没有 const,指针有 const,const 的指针不可变;
5. 引用不能为空,指针可以为空.