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