有关“<<“重载问题

1982xcc 2003-08-23 03:23:12
程序代码如下:
#include <iostream>
using namespace std;
class LibMat{
public :
LibMat(){
cout<<"LibMat::LibMat() default constructor!\n";
}
virtual ~LibMat()
{
cout<<"LibMat::LibMat() destructor!\n";
}
virtual void print()const
{
cout<<"LibMat::print()____I am a LibMat object!\n";

}

};
void print(const LibMat &mat)
{
cout<<"in global print():about to print mat.print()\n";
mat.print();
}
class Book:public LibMat
{
public:
Book(const string &title,const string &author)
:_title(title),_author(author)//////逐一成员初始化
{

cout<<"Book::Book cnostructor\n";
}
virtual ~Book()
{
cout<<"Book::Book() destructor\n";
}
virtual void print()const
{
string _title;
string _author;
cout<<"I am a book object!\n";
cout<<"title"<<_title<<"\n";////////////////////////_title??
cout<<"author"<<_author<<endl;///////////////////////出错位置

}
const string& title()const{
return _title;
}
const string& author()const{
return _author;
}
protected:
string _title;
string _author;
};
int main()
{

cout<<"Test Book::Book!\n";
Book test("Spring", "Charles");
print(test);
return 0;
}


vc++6.0编译报错“binary '<<' : no operator defined”
请问如何修改
...全文
28 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
1982xcc 2003-08-23
  • 打赏
  • 举报
回复
谢谢!
aflyinghorse 2003-08-23
  • 打赏
  • 举报
回复
加上
#include <string>
Smartdoggie 2003-08-23
  • 打赏
  • 举报
回复
int main()
{

cout<<"Test Book::Book!\n";
Book test("Spring", "Charles");
test.print();
return 0;
}

Smartdoggie 2003-08-23
  • 打赏
  • 举报
回复
virtual void print()const
{
cout<<"I am a book object!\n";
cout<<"title"<<_title<<"\n";
cout<<"author"<<_author<<endl
}
aflyinghorse 2003-08-23
  • 打赏
  • 举报
回复
// string _title;
// string _author;
cout<<"I am a book object!\n";
cout<<"title"<<_title<<"\n";////////////////////////_title??
cout<<"author"<<_author<<endl;///////////////////////出错位置
数据结构 清华大学出版社 1-4.什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求 (1) 在复数内部用浮点数定义它的实部和虚部。 (2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。 (3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。 (4) 定义重载的流函数来输出一个复数。 【解答】 抽象数据类型通常是指由用户定义,用以表示应用问题的数据模型。抽象数据类型由基本的数据类型构成,并包括一组相关的服务。 //在头文件complex.h中定义的复数类 #ifndef _complex_h_ #define _complex_h_ #include class comlex { public: complex ( ){ Re = Im = 0; } //不带参数的构造函数 complex ( double r ) { Re = r; Im = 0; } //只置实部的构造函数 complex ( double r, double i ) { Re = r; Im = i; } //分别置实部、虚部的构造函数 double getReal ( ) { return Re; } //取复数实部 double getImag ( ) { return Im; } //取复数虚部 void setReal ( double r ) { Re = r; } //修改复数实部 void setImag ( double i ) { Im = i; } //修改复数虚部 complex & operator = ( complex & ob) { Re = ob.Re; Im = ob.Im; } //复数赋值 complex & operator + ( complex & ob ); //重载函数:复数四则运算 complex & operator – ( complex & ob ); complex & operator * ( complex & ob ); complex & operator / ( complex & ob ); friend ostream & operator << ( ostream & os, complex & c ); //友元函数:重载<< private: double Re, Im; //复数的实部与虚部 }; #endif //复数类complex的相关服务的实现放在C++源文件complex.cpp中 #include #include #include “complex.h” complex & complex :: operator + ( complex & ob ) { //重载函数:复数加法运算。 complex * result = new complex ( Re + ob.Re, Im + ob.Im ); return *result; } complex & complex :: operator – ( complex & ob ) { //重载函数:复数减法运算 complex *result = new complex ( Re – ob.Re, Im – ob.Im ); return * result; } complex & complex :: operator * ( complex & ob ) { //重载函数:复数乘法运算 complex *result = new complex ( Re * ob.Re – Im * ob.Im, Im * ob.Re + Re * ob.Im ); return *result; } complex & complex :: operator / ( complex & ) { //重载函数:复数除法运算 double d = ob.Re * ob.Re + ob.Im * ob.Im; complex * result = new complex ( ( Re * ob.Re + Im * ob.Im ) / d, ( Im * ob. Re – Re * ob.Im ) / d ); return * result; } friend ostream & operator << ( ostream & os, complex & ob ) { //友元函数:重载<<,将复数ob输出到输出流对象os中。 return os << ob.Re << ( ob.Im >= 0.0 ) ? “+” : “-” << fabs ( ob.Im ) << “i”; }

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧