Number(int = -1, int = -1, int = -1);當我們使用時,若給予參數:
Number num1(1, 2, 3);Constructor得到的參數會依序為1, 2, 3;然而如果不給予參數:
Number num2;
Constructor就會讀取到預設的參數-1, -1, -1(被定義在Prototype裡面)
另外來談論複製class instances的問題,若是我們把上頭的num2 = num1,num2會擁有和num1一模一樣的class members,是透過copy by value的方式,所以往後更改num2都不會改到num1,這樣的方法比較安全,但是若num1存的值很大,將會沒有效率。
更需要注意的是,他並非是呼叫Constructor進行複製,不論是否在Constructor初始化的class members都會被複製。
(以下參照Write C++ Code in Mutli-files的作法)
Number.h
class Number{ public: Number(int = -1, int = -1, int = -1); void display(); void setD(int); private: int a; int b; int c; int d; };
Number.cpp
#include <iostream> #include "numbers.h" using namespace std; Number::Number(int new_a, int new_b, int new_c){ a = new_a; b = new_b; c = new_c; d = 0; } void Number::display(){ cout << "a=" << a << "\tb=" << b << "\tc=" << c << "\td=" << d << endl; } void Number::setD(int new_d){ d = new_d; }
Main.cpp
#include <iostream> #include "numbers.h" using namespace std; int main(){ // declare two new Number instance Number num1(1, 2, 3); Number num2; // set the value of d in num1 num1.setD(100); // display both num1.display(); num2.display(); // let num2 = num1 num2 = num1; // display num2 num2.display(); return 0; }
Output:
a=1 b=2 c=3 d=100a=-1 b=-1 c=-1 d=0a=1 b=2 c=3 d=100
No comments:
Post a Comment