1.驗證性實驗部分
①類:類是將不同類型的數據和與這些數據相關的操作封裝在一起的集合體,有點像c語言中的結構。類實際上是一種抽象機制,它描述了一類事物的共同屬性和行為。
②對象:實例化的類就是對象。
③構造函數:c++程序的初始化工作由構造函數來完成,它的作用是在對象被創建時利用特定的值構造對象,將對象初始化為一個特定的狀態。
④復制構造函數:是一種特殊的構造函數,具有一般構造函數的所有特性,其形參是本類的對象的引用。其作用是使用一個已經存在的對象(由復制構造函數的參數指定),去初始化同類的一個新對象也可以說是完成了同類對象的復制。
⑤析構函數:c++程序的清理工作由析構函數來完成,它是在對象的生存期即將結束的時刻被自動調用的,不接收任何參數。
2.編程實驗部分
4-11
#include<iostream> using namespace std; class Rectangle { public: Rectangle(int l, int w); //構造函數 int area(); Rectangle(Rectangle &p); //復制構造函數 ~Rectangle(); //析構函數 private: int length,width; }; //構造函數的實現 Rectangle::Rectangle(int l, int w) { length = l; width = w; } //復制構造函數的實現 Rectangle::Rectangle(Rectangle &p) { length = p.length; width = p.width; } //析構函數的實現 Rectangle::~Rectangle(){ } //計算矩形的面積 int Rectangle::area() { return length*width; } //主函數的實現 int main() { int length, width; cout << "Enter the length and width of the Rectangle:"; cin >> length >> width; Rectangle area1(length, width); Rectangle area2(area1); cout << "The area of the Rectangle:" << area2.area() << endl; return 0; }
4-20
#include<iostream> using namespace std; class Complex { public: Complex(double R, double I); //構造函數 Complex(double R); //重載函數 Complex(Complex &c); //復制構造函數 Complex add(Complex &c); void show(); private: double r; double i; }; //構造函數的實現 Complex::Complex(double R, double I) { r = R; i = I; } //重載函數的實現 Complex::Complex(double R) { r = R; } //復制重載函數的實現 Complex::Complex(Complex &c) { r = c.r; } //add函數的實現 Complex Complex::add(Complex &c) { r = r + c.r; return 0; } //show函數的實現 void Complex::show() { cout << r << "+" << i << "i" << endl; } //主函數 int main() { Complex c1(3, 5); Complex c2 = 4.5; c1.add(c2); c1.show(); return 0; }
實驗總結與體會
啊....翻了好久的書,自己又想了很久,終於完成了這次實驗
雖然題量似乎越來越少了,但明顯難度提高了許多,花的時間也越來越多了
這些知識看上去挺容易的,但實際動手操作后才發現自己還是太天真....
而且看了書上的例子也不一定能全部理解
例如析構函數,我了解了它的作用,但還是無法真正感受到它的存在,而且書上關於析構函數的介紹也不太多
所以第一題里析構函數的實現里我什么都沒寫(-_-||)
嘛嘛...還是多花時間慢慢仔細學吧,感覺自己的漏洞還是挺多的