Рубрики

Вывод программы C ++ | Комплект 9

Предсказать вывод следующих программ на C ++.

Вопрос 1

template <class S, class T> class Pair

{

private:

    S x;

    T y;

/ * ... * /
};

  

template <class S> class Element

{

private:

    S x;

/ * ... * /
};

  

int main ()

{

    Pair <Element<int>, Element<char>> p;

    return 0;

}

Выход:

Compiler Error: '>>' should be '> >' within a nested template argument list

Когда мы используем вложенные шаблоны в нашей программе, мы должны поставить пробел между двумя закрывающими угловыми скобками, в противном случае это конфликтует с оператором >>. Например, следующая программа компилируется нормально.

template <class S, class T> class Pair

{

private:

    S x;

    T y;

/ * ... * /
};

  

template <class S> class Element

{

private:

    S x;

/ * ... * /
};

  

int main ()

{

    Pair <Element<int>, Element<char> > p;   // обратите внимание на пробел между '>' и '>'

    return 0;

}

вопрос 2

#include<iostream>

using namespace std;

  

class Test 

{

private:

    static int count;

public:

    static Test& fun();

};

  

int Test::count = 0;

  
Test& Test::fun() 
{

    Test::count++;

    cout<<Test::count<<" ";

    return *this;

}

  

int main()  

{

    Test t;

    t.fun().fun().fun().fun();

    return 0;

}

Выход:

Compiler Error: 'this' is unavailable for static member functions

этот указатель недоступен для статических методов-членов в C ++, так как статические методы также могут быть вызваны с использованием имени класса. Точно так же в Java статические методы-члены не могут получить доступ к этому и супер (супер для базового или родительского класса).
Если мы сделаем fun () нестатичным в вышеуказанной программе, то программа работает нормально.

#include<iostream>

using namespace std;

  

class Test 

{

private:

    static int count;

public:

    Test& fun(); // fun () теперь не статичен

};

  

int Test::count = 0;

  
Test& Test::fun() 
{

    Test::count++;

    cout<<Test::count<<" ";

    return *this;

}

  

int main()  

{

    Test t;

    t.fun().fun().fun().fun();

    return 0;

}

Выход:

Output:
1 2 3 4

Пожалуйста, пишите комментарии, если вы найдете какие-либо ответы / объяснения неправильными или хотите поделиться дополнительной информацией по темам, обсужденным выше.

Рекомендуемые посты:

Вывод программы C ++ | Комплект 9

0.00 (0%) 0 votes