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を加える意味はありません
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