C++學習第一課 初學者易犯的錯誤
阿新 • • 發佈:2018-11-01
初學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++的關係: