例题1:奇怪的类复制:
http://cxsjsxmooc.openjudge.cn/2020t3spring2/002/
样例输入
None
样例输出
9
22
5
#include <iostream>
using namespace std;
class Sample {
public:
int v;
Sample() { }
Sample(int a) { v = a; }
Sample(const Sample & b) { v = b.v + 2; }
};
void PrintAndDouble(Sample o)
{
cout << o.v;
cout << endl;
}
int main()
{
Sample a(5); //复制构造函数
Sample b = a; //复制构造函数
PrintAndDouble(b); //复制构造函数
Sample c = 20; //类型转换构造函数
PrintAndDouble(c); //复制构造函数
Sample d; //构造函数
d = a; //复制构造函数
cout << d.v;
return 0;
}
例题2:超简单的复数类:(类型转换构造函数)
当需要的时候,编译系统会自动调用类型转换构造函数, 建立一个无名的临时对象(或临时变量)。
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
double r,i;
public:
void Print() {
cout << r << "+" << i << "i" << endl;
}
Complex() { };
Complex (const char *p ){ //Complex (const char p[] )
r = p[0] - '0';
i = p[2] - '0';
}
};
int main() {
Complex a;
a = "3+4i"; a.Print();
a = "5+6i"; a.Print();
return 0;
}