Интересно почитать… Блог в котором есть много интересной информации…

5 марта 2013

Проходим тестирование на C++ разработчика в Яндексе

Категория: программирование — dmitriano @ 14:20

У них тест состоит из четырех простых вопросов

Первый вопрос

Перепишите код, устранив имеющиеся в нём проблемы, но не изменяя функцию main

class Foo
{
public:
    Foo(int j) { i=new int[j]; }
    ~Foo() { delete i; }
private:
    int* i;
};
 
class Bar: Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};
 
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}

Ответ на первый вопрос

Надо добавить конструктор по умолчанию, виртуальный деструктор, публичное наследование, длину массива и оператор присваивания.

class Foo
{
public:
    Foo() : i(0), len(-1) {}
     
    Foo(int j) { i=new int[j]; len = j;}
     
    virtual ~Foo()
    {
        //it works fine even if i==0
        delete i;
    }
 
    Foo & operator = (const Foo & right)
    {
        delete i;
 
        //propably we need to implement some kind of reference counting
        //but I simply made a copy of the array
 
        if (right.i == 0)
        {
            i = 0;
 
            len = -1;
        }
        else
        {
            len = right.len;
 
            i = new int[len];
             
            memcpy(i, right.i, len * sizeof(int));
        }
 
        return *this;
    }
 
private:
    int* i;
    int len;
};
 
class Bar: public Foo
{
public:
    Bar(int j) { i=new char[j]; }
    ~Bar() { delete i; }
private:
    char* i;
};
 
 
void main()
{
    Foo* f=new Foo(100);
    Foo* b=new Bar(200);
    *f=*b;
    delete f;
    delete b;
}

Ответ на четвертый вопрос

std::wstring GetWindowTextW(HWND hWnd)
{
    int len = GetWindowTextLength(hWnd);
 
    std::wstring s;
 
    s.reserve(len + 1);
 
    ::GetWindowTextW(hWnd, const_cast<wchar_t*>(s.c_str()), len);
 
    return s;
}
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru