1. 程式人生 > >標準C++(1)

標準C++(1)

esp 數組 nbsp 重載 ostream names ++ 釋放內存 操作

一、引用

引用就是某一變量(目標)的一個別名,對引用的操作與對變量直接操作完全一樣。

引用的聲明方法:類型標識符 &引用名=目標變量名;

  例: int& num;

 引用類似於起別名

  註意:

  (1)&在此不是求地址運算,而是起標識作用。

  (2)類型標識符是指目標變量的類型。

  (3)聲明引用時,必須同時對其進行初始化。

  (4)引用聲明完畢後,相當於目標變量名有兩個名稱,即該目標原名稱和引用名,且不能再把該引用名作為其他變量名的別名。

  (5)引用也可以當作函數的返回值,但絕不能返回一個局部變量的引用。

  (6)引用可以當作函數的參數,它引用的對象就是函數的實參。引用可以達到指針的效果。

  (7)引用不光可以引用標識符,也可以引用立即數,但必須加const屬性

二、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、全局空間歸屬為匿名空間
  在全局空間定義的標識符都屬於這個匿名空間,匿名空間默認開放。
  如果函數中有同名的標識符把匿名空間中的屏蔽了,可以使用空的域限定符來表示他 ::變量名

標準C++(1)