このプログラムがどのように機能するかを理解しようとしています。私は c++ テンプレートが初めてです。次の関数が必要な理由を誰か説明できますか?
friend std::ostream &operator <<(std::ostream &os, const Temp &temp)
文字列テンプレートでのみ機能するようです。
また、機能は何をしoperator T() {return val;}
ますか?
#include <iostream>
#include<string>
template <typename T>
class Temp {
friend std::ostream &operator <<(std::ostream &os, const Temp &temp) {
os << temp.val;
return os;
}
public:
Temp(T val) : val(val) {}
operator T() {return val;}
public:
T val;
};
使用例:
#include <iostream>
#include<string>
#include "temp2.h"
using namespace std;
int main() {
temp<int> si = 10;
cout << "si: " << si << endl;
si = si + 2;
cout << "After si = si + 2: " << si << endl;
Temp<double> si2 = 15.5;
cout << "si: " << si2 << endl;
si2 = si2 + 2.3;
cout << "After si = si + 2: " << si2 << endl;
Temp<string> ss = string("Hello");
cout << "ss: " << ss << endl;
ss = string(ss).substr(1);
cout << "After ss = si.substr(1): " << ss << endl;
return 0;
}