📜  C++程序的输出|设置 9

📅  最后修改于: 2022-05-13 01:56:10.930000             🧑  作者: Mango

C++程序的输出|设置 9

预测以下 C++ 程序的输出。

问题 1

template  class Pair
{
private:
    S x;
    T y;
/* ... */
};
  
template  class Element
{
private:
    S x;
/* ... */
};
  
int main ()
{
    Pair , Element> p;
    return 0;
}

输出:

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

当我们在程序中使用嵌套模板时,必须在两个右尖括号之间放置一个空格,否则会与运算符>> 发生冲突。例如,以下程序编译良好。

template  class Pair
{
private:
    S x;
    T y;
/* ... */
};
  
template  class Element
{
private:
    S x;
/* ... */
};
  
int main ()
{
    Pair , Element > p;   // note the space between '>' and '>'
    return 0;
}


问题2



#include
using namespace std;
  
class Test 
{
private:
    static int count;
public:
    static Test& fun();
};
  
int Test::count = 0;
  
Test& Test::fun() 
{
    Test::count++;
    cout<

输出:

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

this 指针不可用于 C++ 中的静态成员方法,因为静态方法也可以使用类名调用。同样在Java,静态成员方法无法访问 this 和 super(super 用于基类或父类)。
如果我们在上面的程序中使 fun() 非静态,那么程序就可以正常工作。

#include
using namespace std;
  
class Test 
{
private:
    static int count;
public:
    Test& fun(); // fun() is non-static now
};
  
int Test::count = 0;
  
Test& Test::fun() 
{
    Test::count++;
    cout<

输出:

Output:
1 2 3 4