[2]C++離港編
9836 ワード
参照
参照は別名です.変数の参照は変数の別名です.
参照タイプの変数を定義します.他の変数を定義するのと同じように、変数名に&
ポインタの参照:
関数パラメータとしての参照(スワップ値)
参照は別名:int&a=NULL(×) int &a=b;(√)int*p=NULL(√)ここでもポインタと参照の違いがわかります.
const定数
基本変数タイプ
ポインタ変数タイプ
const int*pタイプ
ここで、constは*pを修飾し、変数aに別名*pを付ける.*pは変数aに対して読む権限しかなく、書く権限がない
int*const pタイプ
ここでconstがpを修飾すると,pは新しい変数を指すことができなくなる.
const int*const pタイプ
参照タイプ
関数の新しいプロパティ
関数のデフォルト
一般に、関数を定義するときに、関数のデフォルト値を宣言します.
関数のリロード
同じ関数名の異なる実装に対して、コードをより秩序正しく、より簡潔で、より筋道的に見せることです.以下にsum()関数のリロードを実現する.
メモリ管理
メモリの初期認識
1.メモリとは
メモリはリソースです.プログラムを実行するときにこのリソースを再利用します.
2.資源を誰が管理するか
リソースはオペレーティングシステムによって管理されます
3.私たちにできること
オペレーティングシステムにリソースを申請&解放することができます
メモリの申請と解放方法
メモリの種類を申請して解放する
演算子newとdeleteを使用してメモリを申請する:new例えばint*p=new int;メモリの解放:deleteなどのdelete p
ブロックメモリの申請と解放
メモリの申請と解放に関する注意事項
申請:申請が成功したかどうかを判断します.すなわち、p=NULLが失敗しました.p!=NULLが正常にリリースされました:delete後、空にすると、多くのトラブルを避けることができます.p=NULL
コードデモ
メモリのタイプのリクエストと解放
ブロックメモリの申請と解放
参照は別名です.変数の参照は変数の別名です.
参照タイプの変数を定義します.他の変数を定義するのと同じように、変数名に&
ポインタの参照:
#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");
}