《C++大学教程》中关于运算符重载的一个例程
《C++大学教程(第二版)》第八章关于"<<"和">>"的重载的实例如下:
上述代码中,除了注释没有copy过来,以及#include <iostream>和#include <iomanip>中没有加“.h”标示,其余都一样。
如果加了.h标示,则会报错说找不到文件。
然而把.h标示去掉后,报了27个错误:
我想这不是代码敲错了,应该是设置哪儿有问题吧。
环境是VS2005,默认安装的,没有做过设置方面的修改。之前跑过简单的C++程序也成功了。
请高手帮忙!!!
#include <iostream>
#include <iomanip>
class PhoneNumber{
friend ostream &operator<<(ostream&, const PhoneNumber&);
friend istream &operator>>(istream &, PhoneNumber &);
private:
char areaCode[4];
char exchange[4];
char line[5];
};
ostream &operator<<(ostream &output,const PhoneNumber & num)
{
output << "(" << num.areaCode <<") "
<< num.exchange << "-" << num.line;
return output;
}
istream &operator>>(istream &input, PhoneNumber & num)
{
input.ignore();
input >> setw(4) >>num.areaCode;
input.ignore(2);
input >> setw(4) >> num.exchange;
input.ignore();
input >> setw(5) >> num.line;
return input;
}
int main()
{
PhoneNumber phone;
cout << "Enter a phone number in the form of (123) 456-789:\n";
cin >> phone;
cout << "The phone number entered was: " << phone <<endl;
return 0;
}
上述代码中,除了注释没有copy过来,以及#include <iostream>和#include <iomanip>中没有加“.h”标示,其余都一样。
如果加了.h标示,则会报错说找不到文件。
然而把.h标示去掉后,报了27个错误:
1>fig08_03.cpp
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C2143: syntax error : missing ';' before '&'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C2433: 'ostream' : 'friend' not permitted on data declarations
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C2061: syntax error : identifier 'ostream'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : error C2805: binary 'operator <<' has too few parameters
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C2143: syntax error : missing ';' before '&'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C2433: 'istream' : 'friend' not permitted on data declarations
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C2061: syntax error : identifier 'istream'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : error C2805: binary 'operator >>' has too few parameters
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(12) : error C2143: syntax error : missing ';' before '&'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(12) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(12) : error C2086: 'int ostream' : redefinition
1> d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(5) : see declaration of 'ostream'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(12) : error C2065: 'output' : undeclared identifier
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(12) : error C2059: syntax error : 'const'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(13) : error C2143: syntax error : missing ';' before '{'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(13) : error C2447: '{' : missing function header (old-style formal list?)
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C2143: syntax error : missing ';' before '&'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C2086: 'int istream' : redefinition
1> d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(6) : see declaration of 'istream'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C2065: 'input' : undeclared identifier
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C2065: 'num' : undeclared identifier
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C2275: 'PhoneNumber' : illegal use of this type as an expression
1> d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(4) : see declaration of 'PhoneNumber'
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>d:\myc++study\fig08_03\fig08_03\fig08_03.cpp(18) : fatal error C1903: unable to recover from previous error(s); stopping compilation
1>Build log was saved at "file://d:\myC++Study\fig08_03\fig08_03\Debug\BuildLog.htm"
1>fig08_03 - 27 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我想这不是代码敲错了,应该是设置哪儿有问题吧。
环境是VS2005,默认安装的,没有做过设置方面的修改。之前跑过简单的C++程序也成功了。
请高手帮忙!!!
...全文
相关推荐
清华大学 C++教程课件.rar
**高级话题**:如命名空间、内联函数、预处理器、运算符重载、友元等,这些内容进一步提升了C++的灵活性。
C++语言程序设计讲义
《C++语言程序设计讲义》是郑莉主编的一本针对C++编程的教程,特别适用于初学者和希望深入理解C++的程序员。
实验二 运算符重载的应用.doc
四、实验内容(1)步骤一:新建一个空工程,名称为“Operator”,为“Operator”工程新建源文件“Operator.cpp”和头文件“Complex.h”。
C++运算符重载的课件
C++运算符重载的课件C++运算符重载是C++程序设计中一个非常重要的概念,它允许用户自定义的数据类型以一种更简洁的方式工作,使得代码更加简洁易读。
吉林大学C++上机实验报告
该函数不仅提供了一个计算多项式功能,也是验证多项式类实现正确性的重要工具。**六、运算符重载**运算符重载是C++中一项强大的特性,使得运算符能够作用于用户定义的类型。


