1. 程式人生 > >C++學習第一課 初學者易犯的錯誤

C++學習第一課 初學者易犯的錯誤

初學C++初學者容易犯C語言的一些錯誤:C語言是面向過程的設計,而C++是面向物件的設計

例如,我們寫一個求圓的面積的程式碼:

使用C語言的方法(即面向物件的方法)是:

//求圓的面積
//用面向過程的方法求解圓形的面積
// << >> 不會用: 標準輸入cin和標準輸出cout 始終寫在操作符的左邊 
void main()
{
	double	r = 0;
	double	s = 0;

	cout<<"請輸入圓形的半徑:";

	//cin 標準輸入 代表鍵盤
	cin >> r;
	cout<<"r的值是:" << r <<endl;
	s = 3.14*r*r;
	cout<<"圓形的面積是s:" <<s << endl;
	system("pause");
}

而我們使用C++面向物件的方法來程式設計:

//在C++中 定義了一個自定義資料型別 MyCicle 圓形
class MyCicle
{
public:  
	double	m_s; //圓的面積 屬性 成員變數
	double	m_r; //圓的半徑

public:
	void setR(double r) //成員函式
	{
		m_r = r;
	}

	double getR() //成員函式
	{
		return m_r;
	}
	double getS()
	{
		m_s = 3.14*m_r*m_r;
		return m_s;
	}
};

//

void main()
{
	MyCicle		c1, c2, c3; //用類 定義 變數 物件
	double		r;
	cout << "請輸入c1圓形的半徑:";
	cin >> r;

	//給c1圓形的屬性賦值
	c1.setR(r);

	cout << "c1圓形的面積是:" << c1.getS()<<endl;

	system("pause");
}

上面是使用面向物件的方法進行求圓的面積的方法。通常初學者會將C++程式寫為以下程式

//在C++中 定義了一個自定義資料型別 MyCicle 圓形
class MyCicle
{
public:  
	double	m_r; //圓的半徑
    double	m_s = 3.14*m_r*m_r; //圓的面積 屬性 成員變數
};

//

void main()
{
	MyCicle		c1, c2, c3; //用類 定義 變數 物件
	double		r;
	cout << "請輸入c1圓形的半徑:";
	cin >> r;

	//給c1圓形的屬性賦值

	cout << "c1圓形的面積是:" << m_r <<endl;

	system("pause");
}

結果是不對的,為什麼?

這就涉及到C++的記憶體使用的問題,因為上面的程式中C++在進行類的定義的時候,就已經將m_s = 3.14*m_r*m_r;進行了運算,而此時還沒有對m_r進行賦值,所以我們輸出的圓的面積是亂碼的。這也就引出了類的定義中進行成員函式的定義。

 

還有一點,我們通常使用以下語句將輸出視窗進行定格,否則,輸出視窗將一閃即逝

system("pause");

C語言與C++的關係: