C++學習筆記————類的定義與使用
阿新 • • 發佈:2018-12-15
練習1,建立一個可以求自身面積與周長的矩形類
# include <iostream> // 此處class關鍵字也可以換成struct關鍵字 class Rectangle { public: double w, h; //周長函式和麵積函式都是內聯成員函式 inline void ZhouChang(); void MianJi() { std::cout << "該矩形的面積是" << w * h << std::endl; } void SetWidthAndHeight(double width, double height); Rectangle(double width, double height); }; Rectangle::Rectangle(double width, double height) { w = width; h = height; } void Rectangle::SetWidthAndHeight(double width, double height) { w = width; h = height; } void Rectangle::ZhouChang() { std::cout << "該矩形的周長是" << w * h << std::endl; } int main() { Rectangle R(3.5,56); R.ZhouChang(); R.MianJi(); R.SetWidthAndHeight(6, 76.5); R.ZhouChang(); R.MianJi(); std::cout << sizeof(R) << std::endl; //用指標的方式來呼叫成員函式,成員變數 Rectangle *p1 = &R; p1->SetWidthAndHeight(5, 23); p1->MianJi(); //用引用的方式來呼叫成員函式,成員變數 Rectangle &p2 = R; p2.MianJi(); //注意此處不能用引用的方式呼叫類的成員函式, //因為呼叫成員函式是必須明確其所作用的物件, //此處用引用無法搞清楚是作用在哪個物件上面, //故編譯會報錯。 //p2->SetWidthAndHeight(6, 12); //物件之間可以相互賦值 Rectangle R1(61,5); R1 = R; R1.MianJi(); return 0; }
練習2,實現一個學生類,所有的成員變數為私有 實現 輸入:姓名,年齡,學號,第一學年成績· 第二學年成績,第三學年成績,第四學年成績。 輸出:姓名,年齡,學號,4年平均成績。 例如:輸入: Tom 18 7817 80 80 90 70 輸出: Tom,18,7817,80
# include <iostream> #include <cstring> #include<cstdlib> using namespace std; class Student { char name[10];//陣列在定義時必須指定空間,不能為空 int age, id, mark1, mark2, mark3, mark4; public: void PrintInfo( char name_[], int age_, int id_, int mark1_, int mark2_, int mark3_, int mark4_) { strcpy_s(name, name_);//用strcpy會報錯 id = id_; age = age_; mark1 = mark1_; mark2 = mark2_; mark3 = mark3_; mark4 = mark4_; double Average_mark = 0.25*(mark1 + mark2 + mark3 + mark4); cout << "name is" << name << endl;//此處用<cstring標頭檔案>就不能用<<運算子輸出 得改成用<string> 標頭檔案 cout << "age is " << age << endl; cout << "id is " << id << endl; cout << "the average mark is " << Average_mark << endl; }; }; int main() { Student Tom; char name[10]; cin.getline(name, 10, ' ');//陣列的傳遞要用變數的形式賦值 Tom.PrintInfo(name,18,7817,80,80,90,70); while (1); return 0; }