나는 전화 1과 같은 몇 가지 의견을주고 주요 기능 2를 호출 코드에서 C++ 연산자 int가 호출되는 이유는 무엇입니까? 아래의 코드에서
#include <iostream>
class A
{
public:
A(int i) : m_i(i) { }
public:
int operator()(int i = 0) const
{
return m_i + i;
}
operator int() const
{
return m_i;
}
operator float() const
{
return 0.0;
}
private:
int m_i;
friend int g(const A&);
};
int f(char c)
{
return c;
}
int g(const A& a)
{
return a.m_i;
}
int main()
{
A f(2), g(3);
int i = f;// call 1
std::cout << f(1) << g(f) << std::endl;// call 2
return 0;
}
니펫을. operator int가
에 호출 된 이유를 이해했습니다.으로 전화하십시오. 하지만 왜 전화가 왔는지 이해할 수 없었습니다. 왜 그렇게하는지 설명 할 수 있습니까?
'f'및 'g'기능을 제거하십시오. 그들은 코드에서 사용되지 않습니다. – ghostofstandardspast
아마도 변수와 함수의 이름을 같은 이름으로 지정하지 않으면 더 명확 해집니다. –
온라인 테스트에서의 질문. 방금 여기 복사 했어. – Vishwamithra