下面程序的输出值是多少?并解释原因:
#include "stdafx.h"
#include <iostream.h>
class C
{
public:
int i;
public:
C(int j) {i = j;}
};
void f(C *the_pc)
{
the_pc = new C(6);
}
int main()
{
C *pc = new C(5);
f(pc);
cout << "The i is " << pc->i << endl;
}
程序的执行结果如下:
原因如下:
1. 在main()函数中,首先新建一个对象C(5),并且让C(5)初始化指针pc,然后调用f(C *the_pc),将pc作为参数传递到函数中,而函数f(pc)只改变了pc指针所指向的内容,而pc本身的值并未改变,因此,pc->i 的值为5.
2. 一个语法问题:当使用<iostream.h>时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。因此头文件的使用还有第二种方式:
#include <iostream>
using namespace std;