で - http://www.learncpp.com/cpp-tutorial/132-function-template-instances/関数テンプレート値によって参照差
// passing all parameters by references
template <typename T1, typename T2>
const T2& add_two_objects(const T1& x,const T2& y) {
return x+y;
};
int main() {
using std::cout;
int x(0),y(0);
std::cout << "Please enter number 1" << std::endl;
std::cin >> x;
std::cout << "Please enter number 2" << std::endl;
std::cin >> y;
cout<< "sum of two integers is " << add_two_objects(x,y+1.2) << '\n';
cout<< "sum of two double is " << add_two_objects(x,y+2.52424324) << '\n';
return 0;
}
プログラムは罰金コンパイルするが、実行時に、私はいつもセグメンテーションフォールトを取得します。しかし、値を渡すようにテンプレートを変更すると、すべてが機能します。
// passing all parameters by value
template <typename T1, typename T2>
const T2 add_two_objects(const T1 x,const T2 y) {
return x+y;
};
誰でも説明していただけますか?
のように見えるかもしれません。しかし、これはかなり無意味なコードであり、あまり書かれていません。別のチュートリアルを見つけるべきでしょうか? –
@CodyGray少なくともturialは 'using namespace std;'の代わりに 'std :: cout'を使用しています – user463035818
私はチュートリアルの例を改良して複雑なものを試しました(もちろん理解しています)。 – infoclogged