2
내가 가지고있는 2 템플릿 기능이 프로그램을 다음 assign(a,a+b)
호출 두 번째 템플릿 함수 않는 이유템플릿 호출이 UNMATCH 것 같다
#include <iostream>
template <class T> void assign(T& t1,T& t2){
std::cout << "First method";
t1=t2;
}
template <class T> void assign(T& t1,const T& t2) {
std::cout << "Second method";
t1=t2;
}
class A
{
public:
A(int a):_a(a){};
private:
int _a;
friend A operator+(const A& l, const A& r);
};
A operator+(const A& l, const A& r) {
return A(l._a+r._a);
}
int main()
{
A a=1;
const A b=2;
assign(a,a+b);
}
내가 이해 은어 operator+
에서 우리는 새로운 A
객체를 createing하고 int 매개 변수로 ctor를 호출하십시오.
const 개체로 a+b
을 생성하고 있습니까?
const가 아닌 좌변의 심판을 가정 해 봅시다. –