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