LINUX.ORG.RU

C++


0

0

#include <iostream>

using namespace std;

class A
{
    public:
        A(){i = 0; cerr << " A(0) ";}
        A(int b){i = b;cerr << " A(" << i << ") ";}
        ~A(){cerr << " ~A(" << i << ")\n";}
        A (const A& b){i = b.i;cerr << "copy(" << i << ") ";}
        const A &operator=( const A &r )
        {
            if( this != &r )
            {
                i = r.i;
                cerr << " =(" << i << ") ";
            }
            else
            {
                cerr << " ravni ";
            }
            return *this;
        }
    private:
        int i;
};

A b(3);
A t(3);

int main()
{
    t = b;
    return 0;
}

 A(3)  A(3)  =(3)  ~A(3)
 ~A(3)

Почему =(3), а не ravni?
anonymous

Объекты разные, следовательно указатели на них разные.
А сравниваются именно указатели а не значения.
Вот и всё.

romanSA
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.