C++クイックスタート--1

19802 ワード

このコースはC言語の基礎と対象の基礎を持つ学生に適しています.
C++helloword
#include "iostream"
using namespace std;
int main(){
	cout<<"helloword"<<endl;
	//cout<<          endl   
	return 0;
}

プロシージャ向けとオブジェクト向けの比較
円面積と周長を求める例を用いてオブジェクト向けとプロセス向けの異なる実現を比較する
//       
int main(){
	double r = 0;
	double s = 0;
	double c = 0;
	cout<<"       ";
	cin >> r;	//    
	const double pi = 3.14;
	s = pi*r*r;
	c = 2 * r * pi;
	cout<<"     "<<s<<endl;
	cout<<"     "<<c<<endl;
	return 0;
}

//            
class CirCle{
private:
	double m_s;
	double m_r;
	double m_c;
public:
	void setR(double r){
		this->m_r = r;
	}
	double getR(){
		return this->m_r;
	}
	double getS(){
		return this->m_r * m_r * 3.14;
	}
	double getC(){
		return this->m_r * 2 * 3.14;
	}
};
int main(){
	CirCle c1,c2;
	double r;
	cout<<"  c1    "<<endl;
	cin>> r;
	c1.setR(r);
	cout<<"c1     "<<c1.getS()<<endl;
	cout<<"c1     "<<c1.getC()<<endl;
	return 0;
}

circleクラスに関数を書かずに宣言時にm_を直接書く人もいるかもしれません.s = m_r * m_r*3.14、この場合、class初期化時のみ使用され、後で呼び出された場合、m_は実行されません.r * m_r * 3.14;
c++のネーミングスペース
C++のネーミングスペースはC#の意味と同じです.ネーミングスペースを参照するにはusing namespaceスペース名を直接使用すればいいです.前述のhellowordに示すように、ネーミングスペースをカスタマイズする必要がある場合は、次のように定義できます.
namespace namespaceA{
	class A{
		
	};
}

参照するネーミングスペースを導入せずにネーミングスペースの下のコンテンツを使用する場合は、ネーミングスペース名::使用するクラス名、例えばstd::cout<
C++の構造体
classのように構造体を使用することができます.C++では、次のように使用できます.
typedef struct Teacher{
	public :
	int num;
	public :
		void sayHello(){
			cout<<"hello"<<endl;
		}
}Teacher;

CとC++の左の式の3つの演算子
Javaでは、int i=2>1しか見たことがありません.3:4; でもcとc++では、こんな風に書けるなんて
//c 
	int a = 10;
	int b = 20;
	*(a>b?&a:&b) = 30;
	printf("%d",b);
//c++ 
	(a>b&a:b) = 30;	

C++での参照
C++の引用とは何ですか?具体的な例を挙げてコードを見てみましょう
	int a = 10;
	int &b = a;	// &      
	a = 100;
	cout<<a<<endl;
	cout<<b<<endl;
	b = 200;
	cout<<a<<endl;
	cout<<b<<endl;
	//     100 100 200 200

針と似ているのではないでしょうか.ここでは、aとbが同じメモリ空間を指すようにします.ここでは、aとbが同じ変数であると理解でき、参照時に参照を初期化する必要があります.
void swap(int &a,int &b){
	int q = a;
	a = b;
	b = q;
}

以上の原理はポインタと同じですが、c++で直接参照で同じ効果を得ることができます.参照が戻り値になった場合、グローバル変数または静的変数、または動的メモリ割り当ての変数しかありません.通常のローカル変数だけであれば、いくつかの問題が発生する可能性があります.例えば、参照を返すと、メモリが解放されます.C++はできるだけ最適化していますが、パラメータが避けられない問題がある場合があります.
//          
int & getB(){
	int b = 10;
	return b;
}

int main(){
	int b = getB();
	cout<<b<<endl;
	return 0;
}

以上のb変数はgetB()関数の終了時に解放され、mainメソッドでその値に印刷できる場合があるのは、bが占めるコンテンツがシステム内の他のコンテンツに上書きされていないためである可能性があります.したがって、プログラム静的を変更する必要があります.この場合、変数は関数の終了時に解放されず、プログラムの終了時に解放されます.
int & getB(){
	static int b = 10;
	return b;
}

int main(){
	int b = getB();
	cout<<b<<endl;
	return 0;
}

もちろん、ダイナミックメモリ割り当ても使用できます.
int & getB(){
	int *b = (int *)malloc(sizeof(int));
	*b = 10;
	return *b;
}

int main(){
	int *b = &getB();
	cout<<*b<<endl;
	free(*b);
	return 0;
}

C++では、参照は左の値としてもよい
int & getB(){
	static int b = 10;
	cout<<b<<endl;
	return b;
}

int main(){
	getB() = 100;
	getB();
	return 0;
}