c++入門
1948 ワード
Person p=new Person(12);
c++には2つの方法があります
Person p1(12);
Person *p2=new Person(12);
p 1メソッドが終了すると消滅する
p 2メソッド終了後、消滅せず、手動で削除する
p 2のメソッド呼び出しは、p 2−>run()であってもよい.または(*p 2).run();
string a="abc";
bar(a); //ok
配列をポインタに渡す
int a[5];
int *p = &a[0];
int *k = a;
にじげんすうはいれつ
int b[3][4];
int *p;
p=b[0];
c++関数における変化と不変
Personにはaddという方法があります.パラメータはPersonpです.pのすべての修正は、実際の外部呼び出しに影響しません.これはオブジェクトを関数パラメータとして使用します(しかし、pが大きいと、この方法はリソースがかかります).
Personにはaddという方法があります.パラメータはPerson*pです.では、pのすべての修正は、実際の外部呼び出しに影響します.これはポインタを使って関数パラメータと呼ばれています.
Personにはaddという方法があります.パラメータはPerson&pです.pのすべての変更は、実際の外部呼び出しに影響します.これは参照を関数パラメータとして使用します.
pの修正を外部に影響させたくないし、効率が高いなら、パラメータ宣言をconst Person&pに変更します.
この場合、次のコードはすべてエラーです.
//オブジェクトを使って関数パラメータを作ると外の実パラメータに影響しないのでmeth 1にconstを加える意味はありません
リファレンスとポインタの初期化と使用について
参考資料http://blog.csdn.net/wuwenxiang91322/article/details/17038557http://www.cnblogs.com/xudong-bupt/p/3509567.htmlhttp://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html
c++には2つの方法があります
Person p1(12);
Person *p2=new Person(12);
p 1メソッドが終了すると消滅する
p 2メソッド終了後、消滅せず、手動で削除する
p 2のメソッド呼び出しは、p 2−>run()であってもよい.または(*p 2).run();
string a="abc";
bar(a); //ok
配列をポインタに渡す
int a[5];
int *p = &a[0];
int *k = a;
にじげんすうはいれつ
int b[3][4];
int *p;
p=b[0];
c++関数における変化と不変
Personにはaddという方法があります.パラメータはPersonpです.pのすべての修正は、実際の外部呼び出しに影響しません.これはオブジェクトを関数パラメータとして使用します(しかし、pが大きいと、この方法はリソースがかかります).
Personにはaddという方法があります.パラメータはPerson*pです.では、pのすべての修正は、実際の外部呼び出しに影響します.これはポインタを使って関数パラメータと呼ばれています.
Personにはaddという方法があります.パラメータはPerson&pです.pのすべての変更は、実際の外部呼び出しに影響します.これは参照を関数パラメータとして使用します.
pの修正を外部に影響させたくないし、効率が高いなら、パラメータ宣言をconst Person&pに変更します.
この場合、次のコードはすべてエラーです.
//オブジェクトを使って関数パラメータを作ると外の実パラメータに影響しないのでmeth 1にconstを加える意味はありません
void meth1(const Person p) {
Person k;
p.year = 15; //
p = k; //
}
void meth2(const Person &p) {
Person k;
p.year = 15; //
p = k; //
}
void meth3(const Person *p) {
Person k(2,2);
p = k; //
p.year = 12;//
}
同時const int a=10;
const int &b=a;
int &c=a; //
int i=42;
const int &b=i; //ok
int a = 10;
const int &b = a;
cout << b << endl;
a = 15;
cout << b << endl;
リファレンスとポインタの初期化と使用について
int k = 4158;
int k2 = 12;
int &p = k;
const int &m = 1234;
//int &m = 123; //
p = k2;
&p = k2; //
&p = 123; //
int k = 12;
int s = 333;
int *m = &k;
int *h = 1234;//
int *h2 = k;//
int p = 11;
*m = p;
m = &s;
m = s;//
m = 123;//
参考資料http://blog.csdn.net/wuwenxiang91322/article/details/17038557http://www.cnblogs.com/xudong-bupt/p/3509567.htmlhttp://www.cnblogs.com/Mr-xu/archive/2012/08/07/2626973.html