我想应该是你的MSDN的安装文件内的压缩文件损坏了,你可以装VS2005.NET 和相应的MSDN8.0啊!
呵呵!
你的问题我也有过!
-----------------------
Cyberkdll
你是不是用VC.net第一只碟来启动安装MSDN的程序的???VC.NET总共有六只碟哦。
建议初学C++的不要用VC.NET 2005,因为VC2005为C++优化了学多东西。例如返回值命名优化(也就是说反回对象的时候(不是*this),vc2005会优化过之后,不会调用copy constructor)
例如:
#include<iostream>
using namespace std;
class example
{
public:
example(int val):_val(val){}
example(){}
example(const example& e):_val(e.GetVal()){ cout<<"hello copy constructor"<<endl;}
friend example operator +(const example &left, const example &right)
{
//return example(left._val + right._val); //这个是普通C++的优化方式
example e;
e._val = left._val + right._val;
return e; //这样就会调用copy constructor
//但是vc 2005会自动优化,使其不会调用copy constructor
//这个有好有不好,如果有些功能是靠copy constructor来完成那就惨了,
//建议初学者不要用vc2005。
}
int GetVal()const { return _val;}
friend ostream &operator <<(ostream &out, example & e)
{
out<<e._val;
return out;
}
private:
int _val;
};
int main()
{
example e(100);
example e2(100);
example e3= e + e2;//由于是先执行 operator+(e,e2),所以之后就执行缺省的operator =,不是copy constructor,c++规定
//自动执行的转换函数在同一个语句,如果已经执行了一次,第一次执行的就是缺省的行为
cout<<e3<<endl;
}
[此贴子已经被作者于2006-4-26 10:30:16编辑过]