// 类模版类内部实现 // 在类模版内部的成员函数中,可以使用泛型成员变量 #include #include #include #include // sqrt using namespace std; template class Point { private: T1 x; T2 y; public: Point(T1 x, T2 y) : x(x), y(y) {} public: // ? T1, T2 是哪一个对象的泛型的具体化?是当前调用的对象的泛型 // 此函数要求两个对象的泛型必须一致 float distance(Point &other) { return sqrt((this->x - other.x) * (this->x - other.x) + (this->y - other.y) * (this->y - other.y)); } }; int main() { // 类的泛型必须指定类型 Point p1(2, 3); Point p2(4, 5.5f); cout << "p1和p2的距离: " << p1.distance(p2) << endl; Point p3(2, 3); Point p4(4, 5.5f); cout << "p3和p4的距离: " << p3.distance(p4) << endl; // 只有同类型的对象才能调用成员函数 // 调用成员函数时,泛型的具体化是当前调用的对象的泛型 Point p5(2, 3); Point p6(4, 5.5f); cout << "p5和p6的距离: " << p5.distance(p6) << endl; return 0; }