# include  <iosteam> # include  <cstring> using  namespace  std; struct  Date 
{ int  y,  m,  d; void  setDate ( int ,  int ,  int ) ; Date ( int  yy,  int  mm,  int  dd)  { y =  yy,  m =  mm,  d =  dd; } 
} ; class  Student 
{ 
private : char *  name; Date birthday; 
public : Student ( const  Student& ) ;  Student ( ) : birthday ( 2000 ,  3 ,  4 )  { }  Student ( char * ,  int ,  int ,  int ) ; ~ Student ( )  { delete  [ ] name; }  
} ; Student:: Student &  operator  =  ( const  Student & s1)  
{ name =  new  char [ strlen ( s1. name)  +  1 ] ; strnpy ( name,  s1. name,  strlen ( s1. name) ) ; birthday =  s1. birthday; return  * this ; 
} Student :: Student ( const  Student & s1)  : birthday ( s1. birthday)  
{ name =  new  char [ strlen ( s1. name)  +  1 ] ; strncpy ( name,  s1. name,  strlen ( s1. name) ) ; 
} Student ::  Student ( char *  p,  int  y,  int  m,  int  d) :  birthday ( y,  m,  d)  
{ name =  new  char [ strlen ( p)  +  1 ] ;  strncpy ( name,  p,  strlen ( p) ) ; 
} ; void  print ( Student s) 
{ cout <<  s, name <<  endl;  
} int  main ( ) 
{ const  char  * p =  "zhangsan" ; Student s1 ( ( char * ) p,  2000 ,  3 ,  4 ) ;  Student s2 ( s1) ;  Student s3; s3 =  s1;  return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Student ; 
class  Date 
{ string printDate ( Student* ) ; 
} ; int  studentCount ( ) 
{ static  int  count =  0 ;  count++ ; return  count; 
} class  Student 
{ 
private : string name;  int  num; int  age; static  int  count;  static  int  totalage; 
public : Student ( string,  int ,  int ) ; void  total ( ) ;  static  float  averageAge ( ) ;  friend  void  print ( Student * ) ;  friend  string Date :: printDate ( Student* ) ; friend  Date;  
} ; Student :: Student ( string name1,  int  num1,  int  age1) : name ( name1) ,  num ( num1) ; 
{ age =  age1;  
} void  Student :: total ( ) 
{ totalage +=  age; count++ ; 
} float  Student :: averageAge ( )  
{ return  totalage /  count; 
} int  Student:: count =  0 ;  
int  Student:: totalage =  0 ; void  print ( Student * s)  
{ s. name =  string ( "class" )  +  s. name;  cout <<  s ->  name<<  s ->  num<<  s ->  age; 
} int  main ( ) 
{ Student s[ 3 ]  =  { Student ( "zhang" ,  202301 ,  18 ) , Student ( "li" ,  202302 ,  19 ) , Student ( "wang" ,  202303 ,  18 ) } ; for  ( int  i =  0 ;  i <  3 ;  i++ ) { s[ i] . total ( ) ; } Student st0 ( s[ 0 ] ) ; Student st1 ( "liu" ,  202304 ,  17 ) ; st1 =  st0; cout <<  "average age = "  <<  Student :: averageAge ( ) ;  cout <<  "average age = "  <<  s[ 0 ] . averageAge ( ) ;  return  0 ; 
} 
# include  <iosteam> using  namespace  std; int  main ( ) 
{ string s1; string s2 ( "hello world\n" ) ; cout <<  s2[ 4 ] ;  s1 =  s1 +  s2; cout <<  s1; 
} 
# include  <iostream> using  namespace  std; class  Student 
{ 
private : 
protected :  string name;  int  num; int  age; 
public : Student ( string,  int ,  int ) ; void  print1 ( )  { cout <<  name <<  num <<  age; } ~ Student ( )  { cout <<  "Destruct Student\n" ; } 
} ; Student :: Student ( string name1,  int  num1,  int  age1) : name ( name1) ,  num ( num1) ; 
{ age =  age1;  cout <<  "Construct Student\n" ; 
} class  IOTStudent  :  public  Student  { 
private : int  cpp; 
public : IOTStudent ( string,  int ,  int ,  int ,  int ) ; void  print ( )  { cout <<  name <<  num <<  age <<  cpp; }  ~ IOTStudent ( )  { cout <<  "Destruct IOTStudent\n" ; } 
} ; 
IOTStudent :: IOTStudent ( string name1,  int  num1,  int  age1,  int  cpp) :  Student ( name1,  num1,  age1)  
{ cpp =  cpp1; cout <<  "Construct IOTStudent\n" ; 
} void  f ( Student * p)  
{ p-> print ( ) ; 
} int  main ( ) 
{ Student s1 ( "zhang" ,  20230001 ,  19 ) ,  * p1;  IOTStudent s2 ( "li" ,  20230002 ,  19 ,  86 ) ,  * p2;  f ( & s1) ;  f ( & s2) ;  p1 =  & s1; p1-> print ( ) ;  p1 =  & s2; p1-> print ( ) ; IOTStudent * p2; p2 =  & s2;  p2-> print ( ) ;  s1 =  s2;  p1 =  & s1;  p2 =  & s2; p1 =  & s2;  p2 =  & s1;  p1 =  p2;  p2-> print ( ) ;  s2 =  s1;  cout <<  "size of Student is:"  <<  sizeof ( Student)  <<  endl; cout <<  "size of IOTStudent is:"  <<  sizeof ( IOTStudent)  <<  endl; cout <<  s2. name;  s2. print ( ) ;  s2. print1 ( ) ;  s2. Student :: print ( ) ;  return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Student 
{ 
private : 
protected :  string name;  int  num; int  age; 
public : Student ( string,  int ,  int ) ; virtual  void  print ( )  { cout <<  name <<  num <<  age; }  ~ Student ( )  { cout <<  "Destruct Student\n" ; } 
} ; Student :: Student ( string name1,  int  num1,  int  age1) : name ( name1) ,  num ( num1) ; 
{ age =  age1;  cout <<  "Construct Student\n" ; 
} class  IOTStudent  :  public  Student  { 
private : int  cpp; 
public : IOTStudent ( string,  int ,  int ,  int ,  int ) ; virtual  void  print ( )  { cout <<  name <<  num <<  age <<  cpp; }  ~ IOTStudent ( )  { cout <<  "Destruct IOTStudent\n" ; } 
} ; 
IOTStudent :: IOTStudent ( string name1,  int  num1,  int  age1,  int  cpp) :  Student ( name1,  num1,  age1)  
{ cpp =  cpp1; cout <<  "Construct IOTStudent\n" ; 
} void  f ( Student * p)  
{ p-> print ( ) ; 
} int  main ( ) 
{ Student s1 ( "zhang" ,  20230001 ,  19 ) ,  * p1;  IOTStudent s2 ( "li" ,  20230002 ,  19 ,  86 ) ,  * p2;  Student * p1; p1 =  & s2; f ( p1) ;  IOTStudent * p2; p2 =  & s2; f ( p2) ;  Student * p; p =  & s1; p ->  print ( ) ; p =  & s2; p ->  print ( ) ; return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Shape 
{ 
protected : double  L,  H; 
public : void  init ( )  { cout <<  "input L=" ; cin >>  L; cout <<  "input H=" ; cin >>  H; } virtual  double  area ( )  =  0 ;  
} ; class  Tr  :  public  Shape  { 
public : virtual  double  area ( )  { return  L *  H /  2 ; } 
} ; class  Re  :  public  Shape  { 
public : virtual  double  area ( )  { return  L *  H; } 
} ; class  Ci  :  public  Shape  { 
public : virtual  double  area ( )  { return  3.14  *  3.14  *  L; } 
} ; int  main ( ) 
{ Shape * p;  for  ( int  i =  0 ;  i <  5 ;  i++ ) { char  c; cout <<  "\ninput shape type" ; cin >>  c; if  ( c ==  'T' ) { p =  new  Tr; } else  if  ( c ==  'R' ) { p =  new  Re; } else  if  ( c ==  'C' ) { p =  new  Ci; } else { break ; } p-> init ( ) ;  cout <<  "\narea of p is:"  <<  p-> area ( ) ; } delete  p; return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Complex 
{ 
private : double  x,  y; 
public : Complex ( double  xx =  0 ,  double  yy =  0 ) ;  void  print ( ) ; Complex&  operator ++ ( ) ; Complex operator ++ ( int ) ; friend  Complex&  operator -- ( Complex&  c) ; 
} ; Complex :: Complex ( double  xx =  0 ,  double  yy =  0 )  
{ x =  xx; y =  y; 
} void  Complex :: print ( ) 
{ cout <<  x; if  ( y >  0 ) { cout <<  "+"  <<  y <<  'i' ; } else  if  ( y <  0 ) { cout <<  y <<  'i' ; } 
} Complex&  operator ++ ( ) 
{ x++ ; return  * this ; 
} Complex Complex:: operator ++ ( int )  
{ Complex temp ( * this ) ;  x++ ; return  temp; 
} Complex&  operator -- ( Complex&  c) 
{ c. x -=  1 ; return  c; 
} int  main ( ) 
{ Complex c2 ( 1.1 ,  - 2.2 ) ; ++ c2;  cout <<  c2 <<  endl; c2++ ;  cout <<  c2; -- c2; cout <<  c2; return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Complex 
{ 
private : double  x,  y; 
public : Complex ( double  xx =  0 ,  double  yy =  0 ) ;  bool  operator >  ( Complex&  c) ; friend  ostream&  operator <<  ( ostream& ,  const  Complex& ) ; 
} ; Complex :: Complex ( double  xx =  0 ,  double  yy =  0 )  
{ x =  xx; y =  y; 
} Complex operator > ( bool &  c)  
{ return  ( x *  x +  y *  y >  c. x *  c. x +  c. y *  c. y)  ?  this  :  c; 
} ostream&  operator <<  ( ostream&  o,  const  Complex&  c) 
{ o <<  c. x; if  ( c. y >  0 ) { o <<  '+'  <<  c. y <<  'i' ; } else  if  ( c. y <  0 ) { o <<  c. y <<  'i' ; } return  o; 
} template  < typename  T1 >  
T1 Max  ( T1 x,  T1 y) 
{ return  ( x >  y)  ?  x :  y; 
} int  Max ( int  x,  int  y) 
{ return  ( x >  y)  ?  x :  y; 
} int  main ( ) 
{ int  i1 =  4 ,  i2 =  6 ; cout <<  Max ( i1,  i2)  <<  endl; float  f1 =  1.2 ,  f2 =  2.3 ; cout <<  Max ( f1,  f2)  <<  endl; char  c1 =  'a' ,  c2 =  'x' ; cout <<  Max ( c1,  c2)  <<  endl; Complex com1; com1 =  1 ;  Complex com ( 1 ) ,  com ( 1.1 ,  1.2 ) ; cout <<  Max ( com1,  com2)  <<  endl;  return  0 ; 
} 
# include  <iostream> using  namespace  std; template  < typename  T2 > 
class  List 
{ 
private : int  n; T2 * v; 
public : List ( int  x) ; ~ List ( ) ; T2&  operator  [ ] ( int  x) ; int  search ( T2 value) ; 
} ; template  < typename  T2 > 
List < T2> :: List ( int  x) 
{ n =  x; v =  new  T2[ n] ; 
} template  < typename  T2 > 
List< T2> :: ~ List ( ) 
{ delete  [ ] v;  
} T2&  List< T2> :: operator  [ ] ( int  x) 
{ return  v[ x] ; 
} template  < typename  T2 > 
int  List < T2> :: search ( T2 value) 
{ for  ( int  i =  0 ;  i <  n;  i++ ) { if  ( v[ i]  ==  value)  { return  i; } } return  - 1 ; 
} int  main ( ) 
{ typedef  List< int >  ilist; ilist il2 ( 57 ) ; List< int >  il1 ( 57 ) ;  List< float >  fl1 ( 58 ) ; fl1[ 20 ]  =  5.0 ; List< Complex>  c1 ( 59 ) ;  return  0 ; 
} template  < typename  T1 > 
class  Mylnt 
{ 
private : T1 t1,  t2,  t3; 
public : Mylnt ( ) ; Mylnt ( T1 t1_value,  T1 t2_value,  T1 t3_value) ; T1 getMax ( ) ; T1 getMin ( ) ; void  sort ( ) ; void  show ( ) ; 
} ; template  < typename  T1 > 
Mylnt < T1> :: Mylnt ( T1 t1_value,  T1 t2_value,  T1 t3_value) 
{ t1 =  t1_value; 
} template  < typename  T1 > 
T1 Mylnt < T1> :: getMax ( ) 
{ T1 max; if  ( t1 >=  t2) { if  ( t1 >  t3) { max =  t1; } else { max =  t3; } } else { if  ( t2 >  t3) { max =  t2; } else { max =  t3; } } 
} 
# include  <iostream> using  namespace  std; class  Complex 
{ 
private : double  x,  y; 
public : Complex ( double  xx =  0 ,  double  yy =  0 ) ;  void  print ( ) ; Complex&  add ( const  Complex&  c2) ; Complex&  operator += ( const  Complex&  c2) ;  Complex operator + ( const  Complex&  c2) ;  friend  Complex operator - ( const  Complex&  c1,  const  Complex&  c2) ;  
} ; Complex :: Complex ( double  xx =  0 ,  double  yy =  0 )  
{ x =  xx; y =  y; 
} void  Complex :: print ( ) 
{ cout <<  x; if  ( y >  0 ) { cout <<  "+"  <<  y <<  'i' ; } else  if  ( y <  0 ) { cout <<  y <<  'i' ; } 
} Complex&  Complex :: add ( const  Complex&  c2)  
{ x +=  c2. x; y +=  c2. y; return  Complex ( x,  y) ;  return  * this ;  
} Complex&  Complex:: operator += ( const  Complex&  c2)  
{ x +=  c2. x; y +=  c2. y; return  * this ;  
} Complex Complex:: operator + ( const  Complex&  c2)  
{ Complex temp; temp. x =  c2. x +  this -> x; temp. y =  c2. y +  y; return  temp; 
} Complex operator - ( const  Complex&  c1,  const  Complex&  c2)  
{ Complex t; t. x =  c1. x -  c2. x; t. x =  x +  c2. x;  t. y =  c1. y -  c2. y; return  t; 
} int  main ( ) 
{ Complex c1; Complex c2 ( 1.1 ,  - 2.2 ) ; Complex c3 ( 1.3 ,  4 ) ; cout <<  "\nc1=" ;  c1. print; cout <<  "\nc2=" ;  c2. print; cout <<  "\nc3=" ;  c3. print; c1. add ( c2) ;  cout <<  "\nafter add(), c1= " ;  c1. print; c1 +=  c2;  cout <<  "\nafter +=c2, c1= " ;  c1. print; c3 =  c1 +  c2;  cout <<  "\nafter c3=c1+c2, c3= " ;  c3. print; c3 =  c1 -  c2;  ( c1 +  c2 +  c3) ;  return  0 ; 
} 
int  getmax ( int  x,  int  y) 
{ return  ( x >  y)  ?  x :  y; 
} 
c3 =  c1 &  c2; 
c1 &=  c2; M1 =  M1 *  M2; 
# include  <iostream> using  namespace  std; class  Complex 
{ 
private : double  x,  y; public : Complex ( double  xx =  0 ,  double  yy =  0 ) ; 					friend  ostream & operator << ( ostream & ,  const  Complex & ) ;  friend  istream & operator >> ( istream & ,  Complex & ) ;  
} ; Complex :: Complex ( double  xx =  0 ,  double  yy =  0 )  
{ x =  xx; y =  yy; 
} ostream & operator << ( ostream & o,  const  Complex & c) 
{ o <<  c. x; if  ( c. y >  0 ) { o <<  "+"  <<  c. y <<  'i' ; } if  ( c. y <  0 ) { o <<  c. y <<  'i' ; } return  o; 
} istream & operator >> ( istream & ,  const  Complex & ) 
{ } int  main ( ) 
{ Complex c1; Complex c2 ( 1.1 ,  - 2.2 ) ; Complex c3 ( 1.3 ,  4 ) ; cout <<  c1 <<  c2; return  0 ; 
} 
# include  <iostream> # include  <cstring> using  namespace  std; class  A 
{ 
private : char  * name; int  i; 
public : A ( const  char * ) ; ~ A ( ) ; A ( const  A& ) ;  A&  operator = ( const  A& ) ;  void  print ( )  { cout <<  "this is class A\n" ; } 
} ; A :: A ( const  char *  n) 
{ name =  nullptr ; size_t size =  strlen ( n) ; name =  new  char [ size +  1 ] ; cout <<  "allocate memory for name\n" ; strncpy ( name,  n,  size) ; cout <<  "construct A : "  <<  name <<  endl; 
} A :: ~ A ( ) 
{ cout <<  "destruct A : "  <<  name <<  endl; delete [ ]  name; 
} A :: A ( const  A&  a) 
{ if  ( name !=  nullptr ) { delete [ ]  name; } name =  a. name;  size_t size =  strlen ( a. name) ;  strncpy ( name,  a. name,  size) ; 
} class  B  :  public  A { 
public : void  print ( )  { cout <<  "this is class B\n" ; } 
} ; class  C  :  public  A { 
public : void  print ( )  { cout <<  "this is class C\n" ; } 
} ; class  D  :  public  A { 
public : 
} ; int  main ( ) 
{ A * p,  b[ 5 ] ; p =  new  A[ 5 ] ; cout <<  b[ 2 ] . i; cout <<  ( * ( p +  2 ) ) . i; delete [ ]  p; A a ( "OOP class" ) ,  * ap; A b ( "class 2" ) ; A b ( a) ;  A b =  a;  cout <<  "a.name="  <<  ( void * ) a. name <<  "b,name="  <<  ( void * ) b. name <<  endl;  a =  b;  cout <<  "a.name="  <<  ( void * ) a. name <<  "b,name="  <<  ( void * ) b. name <<  endl; a. print ( ) ;  ap =  & a; ap ->  print ( ) ;  ap ->  print ( ) ;  return  0 ; 
} 
# include  <iostream> using  namespace  std; struct  CDate 
{ int  y,  m,  d; 
} ; class  CPerson 
{ 
private : CDate birthday; public : bool  cmp ( CDate c)  { long  l1,  l2; l1 =  birthday. y *  10000  +  birthday. m *  100  +  birthday. d; l2 =  c. y *  10000  +  c. m *  100  +  c. d; return  l1 >  l2; } 
} ; int  main ( ) 
{ CPerson p1,  p2; return  0 ; 
} 
# include  <iostream> using  namespace  std; class  Person 
{ 
protected : string name; Person ( string n)  { name =  n; } 
} class  Student  :  virtual  public  Person  { 
protected : int  id; 
public : Student ( )  :  Person ( "" )  { }  Student ( string n,  int  i)  :  Person ( n) ,  id ( i)  { cout <<  "CS\n" ; }  ~ Student ( )  { cout <<  "DS\n" ; } void  print ( )  { cout <<  name <<  id; } 
} ; class  Teacher  :  virtual  public  Person { 
protected : double  salary; 
public : Teacher ( string,  double )  :  Person ( n) { salary =  s;  cout <<  "CT\n" ; }  ~ Teacher ( )  { cout <<  "DT\n" ; } void  print ( )  { cout <<  name <<  salary; } 
} ; 
class  SJ  :  public  Student ,  public  Teacher  { 
public : SJ ( string,  int ,  double ) ; ~ SJ ( )  { cout <<  "Dsj\n" ; } void  print ( ) ; 
} ; SJ :: SJ ( string n,  int  i,  double  s)  :  Person ( n) ,  Student ( n,  i) ,  Teacher ( n,  s)  
{ cout <<  "Csj\n" ; 
} void  SJ :: print ( ) 
{ cout <<  name <<  id <<  name2 <<  salary; print1 ( ) ;  print2 ( ) ; Student :: print ( ) ; Teacher :: print ( ) ; cout <<  name <<  id <<  salary;  cout <<  Teacher:: name <<  id <<  salary;  cout <<  name <<  id <<  salary;  
} int  main ( ) 
{ SJ sj ( "li" ,  20230001 ,  4000.0 ) ; return  0 ; 
}