Странное поведение с перегрузкой оператора =
От: AlexTAI alextai.narod.ru
Дата: 30.04.04 18:19
Оценка:
Почему следующий код
#include <stdio.h>

class B
{
public:
  B& operator=(const B &b)
  {
    printf("BBBBBBBB \n");
    return *this;
  };
};

class C
{
public:
  C& operator=(const C &c)
  {
    printf("CCCCCCC \n");
    return *this;
  };
};

class D : public B,public C
{
public:
  D& operator=(const C &c)
  {
    printf("DDDDDD \n");
    return *this;
  };
};



int main(int argc, char* argv[])
{
  C c1;
  D d1,d2;

  d1=d2;
  d1=c1;

  return 0;
}

скомпилированный g++ выдает

BBBBBBBB
CCCCCCC
DDDDDD


Есть идеи почему???
Почему компайлер ставит оба вызова (порядок мало интересен — он понятен)? Вроде должен быть или один или ошибка компиляции.

(Если кто то знает по какому правилу стандарта оно себя так ведет — был бы рад узнать номер правила)
Тумаров Александр ( AlexTAI )
alextai3@yahoo.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.