[2]C++離港編

9836 ワード

参照
参照は別名です.変数の参照は変数の別名です.
参照タイプの変数を定義します.他の変数を定義するのと同じように、変数名に&
ポインタの参照:
#include<iostream>
using namespace std;
void main()
{
    int a=10;
    int * p=&a;
    int *&q=p;
    *q=20;
    cout<<*p<<endl;//20
    system("pause");
}

関数パラメータとしての参照(スワップ値)
#include<iostream>
#include<stdlib.h>
using namespace std;
void change(int &a,int &b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
void main()
{
    int a=10;
    int b=20;
    change(a,b);
    cout<<a<<','<<b<<endl;//20,10
    system("pause");
}

参照は別名:int&a=NULL(×) int &a=b;(√)int*p=NULL(√)ここでもポインタと参照の違いがわかります.
const定数
基本変数タイプ
#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    const int a=10;
    a=20;//  ,    
    system("pause");
}

ポインタ変数タイプ
const int*pタイプ
#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int a=10;
    const int *p=&a;
    *p=20;
    cout<<*p;//  ,  const     *p
    system("pause");
}

ここで、constは*pを修飾し、変数aに別名*pを付ける.*pは変数aに対して読む権限しかなく、書く権限がない
int*const pタイプ
#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int a=10;
    int b=11;
    int * const p=&a;
    p=&b;
    cout<<*p;//  ,p    a
    system("pause");
}

ここでconstがpを修飾すると,pは新しい変数を指すことができなくなる.
const int*const pタイプ
#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int a=10;
    int b=11;
    const int * const p=&a;
    *p=b;//  
    p=&b;//  
    cout<<*p;
    system("pause");
}

参照タイプ
#include<iostream>
#include<stdlib.h>
using namespace std;
void main()
{
    int a=10;
    const int &b=a;
    b=20;//  ,b     ,       b  ,      a  
    cout<<b;
    system("pause");
}

関数の新しいプロパティ
関数のデフォルト
一般に、関数を定義するときに、関数のデフォルト値を宣言します.
//     ,        
int fun(int a,int b=4,int c=6)//     
int fun(int a,int b=4,int c)//    

関数のリロード
同じ関数名の異なる実装に対して、コードをより秩序正しく、より簡潔で、より筋道的に見せることです.以下にsum()関数のリロードを実現する.
#include <iostream>
using namespace std;
int sum(int a,int b)
{
    return a+b;
}
double sum(double a,double b)
{
    return a+b;
}
void main()
{
    int x=sum(1,2);
    double y=sum(1.2,1.3);
    cout<<x<<" "<<y<<endl;
    system("pause");
}

メモリ管理
メモリの初期認識
1.メモリとは
メモリはリソースです.プログラムを実行するときにこのリソースを再利用します.
2.資源を誰が管理するか
リソースはオペレーティングシステムによって管理されます
3.私たちにできること
オペレーティングシステムにリソースを申請&解放することができます
メモリの申請と解放方法
メモリの種類を申請して解放する
演算子newとdeleteを使用してメモリを申請する:new例えばint*p=new int;メモリの解放:deleteなどのdelete p
ブロックメモリの申請と解放
int *arr=new int[10];//     
delete []arr;//     

メモリの申請と解放に関する注意事項
申請:申請が成功したかどうかを判断します.すなわち、p=NULLが失敗しました.p!=NULLが正常にリリースされました:delete後、空にすると、多くのトラブルを避けることができます.p=NULL
コードデモ
メモリのタイプのリクエストと解放
#include <iostream>
using namespace std;
void main()
{
    int *p=new int(20);//  int     ,   20
    cout<<*p<<endl;
    delete p;
    p=NULL;
    system("pause");
}

ブロックメモリの申請と解放
#include <iostream>
using namespace std;
void main()
{
    int *p=new int[100];
    p[0]=2;
    p[1]=5;
    cout<<p[0]<<p[1]<<endl;
    delete []p;//    [],      p        
    p=NULL;
    system("pause");
}