首先,我在c ++中创建了一个复杂的类,它有两个成员数据--real和imaginary.(形式为a + ib).当我试图为复杂类对象重载<<运算符如下 -
friend ostream operator<<(ostream ,complex ); in .h file
ostream operator <<(ostream o,complex c){
o<<"real part"<<c.real;
o<<"imaginary part<<c.imaginary;
return o;
}
Run Code Online (Sandbox Code Playgroud)
在.cpp文件中,它不起作用,而是打开一个ios_base文件并在那里显示错误.但是当我通过引用传递并通过引用返回如下时,相同的代码会完美地重载<<
ostream& operator <<(ostream& o,complex& c)
{
//same as before
};
Run Code Online (Sandbox Code Playgroud)
我不明白通过引用传递和返回有什么帮助?
int main(){
char *s ;
char *fun( ) ;
s = fun( ) ;
printf ( "%s", s ) ;
}
char *fun( ){
char buffer[30] ;
strcpy ( buffer, "RAM - Rarely Adequate Memory") ;
return ( buffer ) ;
}
Run Code Online (Sandbox Code Playgroud)
为什么上面的代码打印出不可预测的结果?如何使char buffer [30]静态帮助?