zoukankan      html  css  js  c++  java
  • 标准C++(1)

    一、引用

    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

    引用的声明方法:类型标识符 &引用名=目标变量名;

      例: int& num;

     引用类似于起别名

      注意:

      (1)&在此不是求地址运算,而是起标识作用。

      (2)类型标识符是指目标变量的类型。

      (3)声明引用时,必须同时对其进行初始化。

      (4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。

      (5)引用也可以当作函数的返回值,但绝不能返回一个局部变量的引用。

      (6)引用可以当作函数的参数,它引用的对象就是函数的实参。引用可以达到指针的效果。

      (7)引用不光可以引用标识符,也可以引用立即数,但必须加const属性

      (8)不能用 返回值不是引用的函数的返回值给引用初始化

    二、C++的内存管理运算符

    在C++中使用 new/delete 来管理内存,new 用来申请内存,delete 用来释放内存。

    具体用法如下:

     

    #incldue <iostream>
    class Student
    {
        char name[20];
        char sex;
        short;
    };
    
    int main()
    {
           Student *stu = new Student;
    
           delete stu;
    }

    使用 new 创建结构对象时,会自动调用构造函数,delete 时会自动调用析构函数
      【例】 Student* stu = new Student("hehe");

    []可以配合new和delete申请或释放数组。new[] 不可与delete混用,必须使用delete[]释放

      int* p = new int[10]{1,2,3,4,5,6,7,8,9,10};
      delete[] stu;

    三、C++的函数

    C++中函数可以在main函数前执行

    C++具有函数重载的功能

    可以使用同一个函数名,定义多个参数不同(返回值可以不同,前提是参数不同)的函数。

    C++中函数的参数可以有默认值,
      1、函数的默认参数必须靠右。
      2、默认参数要尽量少用,因为可能会引起重载错误
      3、默认参数是编译器在编译时帮助赋值的,所以只能由全局变量、静态变量、字面值对参数进行赋值。

    int func(int num1= 100,char* name = "abcd")
    {
    }
    
    void func(char ch,short  num)
    {
    }

    四、名字空间

    C++引用了名字空间的机制。
    名字空间:把全局的命名空间进一步分割。可以创建出一个个独立的命名空间防止相互之间命名冲突

    1、名字空间的定义

            namespace name
            {
                //变量;
                //函数;
                //结构、类;
            }

    2、名字空间的合并
      a、同名的命名空间会自动合并
      b、在同一个名字空间中标识符必须是唯一的

    3、定义与声明分开

            namespace n1
            {
                //在名字空间中声明函数
                void func(void);
            }
            //在名字空间外定义函数
            void n1::func(void) {}

    4、如何使用名字空间中的内容
      a、域限定符(::),直接使用,名字空间::标识符。【例】 ni::func(); 
      b、using namespace 名字空间; 功能是把名字空间中的标识符
      c、using 名字空间::标识符 ,表示此标识符对后面的代码公开。

    5、名字空间的嵌套
      名字空间可以嵌套,但使用时要逐层解析。 n1::n2::n3::num

            namespace n1
            {
                namespace n2
                {
                    namespace n3
                    {
                        
                    }
                }
            }

    6、全局空间归属为匿名空间
      在全局空间定义的标识符都属于这个匿名空间,匿名空间默认开放。
      如果函数中有同名的标识符把匿名空间中的屏蔽了,可以使用空的域限定符来表示他 ::变量名

  • 相关阅读:
    redux的使用流程
    react类型检查
    将逻辑运算字符串转化为逻辑运算进行运算
    SQL 行列互换 天高地厚
    【转载】linux的IO调度算法和回写机制 天高地厚
    查询昨天的数据 天高地厚
    摘:DBA案例CPU占用100%的问题 天高地厚
    ASP.net HTTP/HTTPS自动切换 天高地厚
    网络连接和初始HTTP请求 天高地厚
    C++内存对象大会战 . 天高地厚
  • 原文地址:https://www.cnblogs.com/unjack/p/9445418.html
Copyright © 2011-2022 走看看