class A
{
public :
// void func( const int ) const {} // если заменить на это - будет компилироватьсяvoid func( constint ) {}
// void func( const int& ) const {} // если заменить на это - будет компилироватьсяvoid func( constint & ) {}
};
voidOnStart ()
{
A a;
a.func( 0 );
int i1 = 0 ;
a.func(i1);
constint i2 = 0 ;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters
}
이 어리석은 소스 예제는 만드는 데 오랜 시간이 걸렸습니다. 만드는 동안 유머 감각은 거의 사라졌습니다.
좋은. )
세 가지 호출 옵션 모두에서 인수가 값으로 전달되는지 또는 참조로 전달되는지 이해하는 것이 불가능하므로 컴파일러는 호출할 함수를 선택할 수 없습니다. 그리고 const 수정자는 그것들을 오버로드합니다: void f(){}와 void f() const {}는 다른 함수입니다. 예제에서 메서드 중 하나를 const로 선언하면 모호성이 사라집니다. 컴파일러는 호출이 const 개체에서 수행되었는지 여부에 따라 올바른 메서드를 선택합니다(귀하의 예제에서 인수 유형은 중요하지 않습니다. ).
객체는 const가 아니므로 const가 없는 메서드는 세 번 모두 호출됩니다. 객체를 const(A const a;)로 선언하면 const 메서드 가 호출됩니다.
출력되는 내용을 확인하십시오.
class A
{
public :
void func() { Print ( "Non const" );}
void func() const { Print ( "Const" );}
};
voidOnStart ()
{
A a;
A const b;
a.func();
b.func();
}
세 가지 호출 옵션 모두에서 인수가 값으로 전달되는지 또는 참조로 전달되는지 이해하는 것이 불가능 하므로 컴파일러는 호출할 함수를 선택할 수 없습니다. 그리고 const 수정자는 그것들을 오버로드합니다: void f(){}와 void f() const {}는 다른 함수입니다. 예제에서 메서드 중 하나를 const로 선언하면 모호성이 사라집니다. 컴파일러는 호출이 const 개체에서 수행되었는지 여부에 따라 올바른 메서드를 선택합니다(귀하의 예제에서 인수 유형은 중요하지 않습니다. ).
객체는 const가 아니므로 const가 없는 메서드는 세 번 모두 호출됩니다. 객체를 const(A const a;)로 선언하면 const 메서드 가 호출됩니다.
당신이 먼저 시작할 것입니다. 여기에서만 오류
constint i2 = 0 ;
a.func(i2); // 'func' - ambiguous call to overloaded function with the same parameters
해당 차트 기간 동안 CopySpread() 함수가 반환하는 스프레드 값은 무엇입니까?
그것이 평균인지, 최소값인지, 최대값인지 명확하지 않으며 함수의 도움말에서는 이에 대해 아무 말도 하지 않습니다.
해당 차트 기간 동안 CopySpread() 함수가 반환하는 스프레드 값은 무엇입니까?
그것이 평균인지, 최소값인지, 최대값인지 명확하지 않으며 함수의 도움말에서는 이에 대해 아무 말도 하지 않습니다.
어디에서, 계정 또는 테스터에서
동일한 매개변수를 사용하여 오버로드된 함수 에 대한 모호한 호출
이것은 나의 오해인가 버그인가?
이것은 나의 오해인가 버그인가?
동일한 매개변수를 사용하여 오버로드된 함수에 대한 모호한 호출
이것은 나의 오해인가 버그인가?
오해.
글쎄, 내가 대답했다. ))))
내 이해에 따르면 이 코드는 두 경우 모두 동일하게 작동해야 합니다.
또한 나는 생각한다.
오해.
글쎄, 내가 대답했다. ))))
이 어리석은 소스 예제는 만드는 데 오랜 시간이 걸렸습니다. 만드는 동안 유머 감각은 거의 사라졌습니다.
이 어리석은 소스 예제는 만드는 데 오랜 시간이 걸렸습니다. 만드는 동안 유머 감각은 거의 사라졌습니다.
좋은. )
세 가지 호출 옵션 모두에서 인수가 값으로 전달되는지 또는 참조로 전달되는지 이해하는 것이 불가능하므로 컴파일러는 호출할 함수를 선택할 수 없습니다. 그리고 const 수정자는 그것들을 오버로드합니다: void f(){}와 void f() const {}는 다른 함수입니다. 예제에서 메서드 중 하나를 const로 선언하면 모호성이 사라집니다. 컴파일러는 호출이 const 개체에서 수행되었는지 여부에 따라 올바른 메서드를 선택합니다(귀하의 예제에서 인수 유형은 중요하지 않습니다. ).
객체는 const가 아니므로 const가 없는 메서드는 세 번 모두 호출됩니다. 객체를 const(A const a;)로 선언하면 const 메서드 가 호출됩니다.
출력되는 내용을 확인하십시오.
좋은. )
세 가지 호출 옵션 모두에서 인수가 값으로 전달되는지 또는 참조로 전달되는지 이해하는 것이 불가능 하므로 컴파일러는 호출할 함수를 선택할 수 없습니다. 그리고 const 수정자는 그것들을 오버로드합니다: void f(){}와 void f() const {}는 다른 함수입니다. 예제에서 메서드 중 하나를 const로 선언하면 모호성이 사라집니다. 컴파일러는 호출이 const 개체에서 수행되었는지 여부에 따라 올바른 메서드를 선택합니다(귀하의 예제에서 인수 유형은 중요하지 않습니다. ).
객체는 const가 아니므로 const가 없는 메서드는 세 번 모두 호출됩니다. 객체를 const(A const a;)로 선언하면 const 메서드 가 호출됩니다.
지금까지 모든 통화가 차질 없이 진행되었습니다.
출력되는 내용을 확인하십시오.
이것은 다른 오페라에서 가져온 것입니다.