오류, 버그, 질문 - 페이지 2156

 
A100 :

질문에 답하려면 완전한 예가 필요한 위치에 따라 다릅니다.

예, 문맥에 맞는 곳이면 어디든지. 그 타당성에도 불구하고 그 기록 자체는 나에게 다소 터무니없는 것처럼 보인다.

 
fxsaber :

예, 문맥에 맞는 곳이면 어디든지. 그 타당성에도 불구하고 그 기록 자체는 나에게 다소 터무니없는 것처럼 보인다.

Before // 항목은 정상입니다... after는 터무니 없습니다.

 
A100 :

Before // 항목은 정상입니다... after는 터무니 없습니다.

함수 필드에 대한 메서드에 대한 포인터를 할당하려는 욕구에서 터무니없는 것은 보이지 않습니다.

 typedef void (*fn)();

void g() { Print ( __FUNCSIG__ ); }

struct A
{
  fn f;
  
  A() : f(g) {}
};

struct B : A
{
   void f() { Print ( __FUNCSIG__ ); }
  
   void A100()   { this .f = this .f; }  // не присвоить полю-функции указатель на одноименный метод, а на другой метод - пожалуйста:
   void A100_2() { this .f = this .h; } // 'h' - pointer to this function type is not supported yet
  
   void h() { Print ( __FUNCSIG__ ); }
};

void OnStart ()
{
  B b;
  
  b.f(); // void g()
  
  b.A100();
  
  b.f(); // void g()
}
 
fxsaber :

함수 필드에 대한 메서드에 대한 포인터를 할당하려는 욕구에서 터무니없는 것은 보이지 않습니다.

부조리함은 컴파일러가 간단한 메서드에 대한 포인터를 지원하지 않는다는 사실에 있으며, 지원한다면 일반 함수와 간단한 메서드에 대한 포인터(다른 조건이 같다면)는 다른 서명을 갖습니다.

 
A100 :

함수 포인터와 단순 메서드 포인터는 서명이 다릅니다.

정적 메서드는 함수와 서명이 어떻게 다릅니까?

 
fxsaber :

정적 메서드는 함수와 서명이 어떻게 다릅니까?

정적 메서드 는 서명이 일치할 때 일반 함수와 다르지 않습니다.

 
A100 :

정적 메서드 는 일반 함수와 동일한 서명을 가집니다.

그렇다면 왜 나쁜가?

 typedef void (*fn)();

void g() { Print ( __FUNCSIG__ ); }

struct A
{
   static fn f;
};
static fn A::f = g;

struct B : A
{
   static void f() { Print ( __FUNCSIG__ ); }
  
   void A100() { this .f = this .f; } // по смыслу ничем не отличается от A::f = B::f
};

void OnStart ()
{
  B b;
  
  b.f(); // void g()
  
  b.A100();
  
  b.f(); // void g()
}
나는 그러한 취미가 모호함을 낳는다고 믿는 경향이 있다. 면접시 언어이해시험의 하나로서만 유용합니다.
 
fxsaber :

그렇다면 왜 나쁜가?

나는 그러한 취미가 모호함을 낳는다고 믿는 경향이 있다. 면접시 언어이해시험의 하나로만 유용합니다.
나쁜 점은 C ++에서는 다른 결과가 있다는 것입니다.
 
A100 :
나쁜 점은 C ++에서는 다른 결과가 있다는 것입니다.

그래서 정당화되지 않습니다.

 
fxsaber :

그것은 무엇입니까?


"버전 저장"을 선택하면 현재 설정이 "버전 로드" 메뉴에서 사용할 수 있는 내장 MT 목록에 저장됩니다. 목록은 고문마다 다릅니다.