C++入门基础知识

来源:互联网 发布:淘宝网二手苹果手机 编辑:程序博客网 时间:2024/06/05 07:31

1. 命名空间

  1. 作用: 实际上就是一个由程序设计者命名的内存区,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
  2. 访问方法:用 作用域解析符:: 来访问,AA : : x,AA表示空间域,x表示成员(名字)。
    namespace AA1//AA1域(空间)    {        int a = 1;//成员    }    namespace AA2    {        int a = 2;    }    int a = 3;    int main()    {        int a = 4;        cout<<a<<end1;//输出4,就近原则        cout<<::a<<end1;//3,全局变量,域缺省时,表示全局域        cout<<AA1::a<<end1;//1,         cout<<AA2::a<<end1;//2,    }

2. C++的基本输入输出流。

cout是标准输出流对象,<< 是输出操作符;
cin是标准输入流对象,>>是输入操作符;
endl是换行操作符;
他们都属于C++标准库,所以都在std的名字空间里面。
1. C++怎么控制double等浮点类型的输出位数吗?
2. 怎么控制输出一个数字的八进制和16进制吗?
这里写图片描述

3. 重载

  1. 什么事函数重载:在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同
  2. 为什么C语言不支持重载,而C++支持:例如函数:void function(int x, int y)
    在C语言中,经过编译器编译后,库中的名字为 _function
    而在C++中,经编译器编译后,库中的名字为_function_int_int, 即C++函数参数不同,函数名不同的函数在库中定义的函数名就不同。(与返回值无关)。
// _Z12OverloadFuncidvoid OverloadFunc (int x, double d){}// _Z12OverloadFuncdivoid OverloadFunc (double x, int d)

4. C++缺省参数

// 全缺省参数int Add1 (int a = 10, int b = 20){    return a + b;}// 半缺省参数int Add2 (int a, int b = 30){    return a + b;}////错误缺省参数//int Add3 (int a = 40, int b)//{//  return a + b;//}void Test (){    Add1();//结果:30    Add1(1);//21    Add1(1,1);//2    Add2(2);//32    Add2(2,2);//22}

5. 指针和引用

 指针我们在C语言中已经有所了解,就不用啰嗦,我们只看引用,和指针做比较

1. 引用的概念:
引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名
2. 定义的格式为:
类型 &引用变量名 = 已定义过的变量名;
3. 引用的特点:
- 一个变量可取多个别名
- 引用必须初始化
- 引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。
4. 使用方法:

void TestReference1 (){int a = 1;int& b = a;cout<<"a:address->" <<&a<< endl;cout<<"b:address->" <<&b<< endl;a = 2;b = 3;int& c = b; // 引用一个引用变量,别名的别名c = 4;}
  1. 做参数:
//【引用传递】如果形参为引用类型,则形参是实参的别名。void Swap (int& left, int& right){int temp = left;right = left ;left = temp ;}//会改变实参的值
//测试值传递/引用传递的效率struct BigData{    int array [1000];};void DealBigData (BigData& x)//35{    x.array [0]= 0;    x.array [1]= 1;    x.array [2]= 2;}void DealBigData (Bigdata x)//125{}#include <Windows.h>void TestReference3 (){    BigData bd ;    int begin = GetTickCount ();    for (int i = 0; i < 1000000; ++i )    {        DealBigData(bd );//125    }    int end = GetTickCount ();    cout<<"cost time:" <<end - begin<<endl ;}
原创粉丝点击