请能者解答:读C++大师Andrew Koenig>时产生的一点疑问

王朝c/c++·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

第八章“一个面向对象的范例”

范例是关于 +,-,*,/等数学表达式的处理。

程序如下:(C++Builder6.0 build 通过,运行不对。书内程序用明显少数字符错误,已改。)

#include

class Expr;

class Expr_node

{

friend ostream& operator use; }

Expr& operator = ( const Expr& t );

};

//----------------------------------------------------

class Int_node: public Expr_node

{

friend class Expr;

int n;

Int_node( int k ) : n( k ) {}

void print( ostream& o ) const { o print( o );

return o;

};

Expr::Expr( int n )

{

p = new Int_node( n );

};

Expr::Expr( const string& op, Expr t )

{

p = new Unary_node( op, t );

};

Expr::Expr( const string& op, Expr left, Expr right )

{

p = new Binary_node( op, left, right );

};

Expr& Expr::operator = ( const Expr& rhs )

{

rhs.p - use++;

if ( --p-use == 0 ) delete p;

p = rhs.p;

return *this;

};

//--------------------------------------------------

void main()

{

// Expr t = Expr( "*", Expr( "-", 5 ), Expr( "+", 3, 4 ));

// Expr t0 = Expr( 123 ); cout

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航