C++ 7.3 return 문 -- -- 반환 참조, 비 참조 유형
6816 단어 c++-primer
간단한 소개
함수가 인용 형식을 되돌릴 때, 되돌림 값을 복사하지 않습니다.반대로 되돌아오는 것은 대상 자체다.
13.1절에는
==================================================================================================================
1. 반환 값이 없는 함수 - void 함수
return 문장은 현재 실행 중인 함수를 끝내고 이 함수를 호출하는 함수에 제어권을 되돌려줍니다.return 문은
1. 반환 값이 없는 함수 - -void 함수
void swap(int &v1,int &v2){
if(v1==v2)
return; // , 。
int tmp=v2;
v2=v1;
v1=tmp;
// return 。
}
void do_swap(int &v1,int &v2){
int tmp=v2;
v2=v1;
v1=tmp;
//void return !!!
}
void swap(int &v1,int &v2){
if(v1==v2)
return false;// !!!!!void bool
return do_swap(v1,v2); //
}
2. 반환값이 있는 함수
1. 반환값이 있는 함수
bool str_subrange(const string &str1,const string &str2){
if(str1.size()==str2.size())
return str1==str2;// , bool
string::size_type size=(str1.size()size()?str1.size():str2.size())
string::size_type i=0;
while(i!=size){
if(str1[i]!=str2[i])
return ;// , , void 。
}
// !!! return 。
}
2. 주함수main의 반환값
3. 비인용 형식으로 되돌아오기(잘 몰라요)
string make_plural(size_t ctr,const string &word,const string &ending){
return (ctr==1) ? word: word+ending;
}
// word , string , word ending , ,return string 。
4, 반환 참조 유형
함수가 인용 형식을 되돌릴 때, 되돌림 값을 복사하지 않습니다.반대로 되돌아오는 것은 대상 자체다.
const string &shorterString(const string &s1,const string &s2){
return s1.size()// const string , , string 。
5, 제발 국부적 대상의 인용으로 돌아가지 마세요- 왜!!!!
함수가 실행되면 국부 대상에게 분배된 저장 공간을 방출합니다.이 때 국부 대상에 대한 인용은 부정확한 메모리를 가리킨다.
const string &mainp(const string &s){
string ret =s;
return ret;// ,
}
6, 인용 반환 왼쪽 값
인용된 함수를 되돌려줍니다. 따라서 이 함수는 왼쪽 값을 요구하는 곳에 사용할 수 있습니다.
char &get_val(string &str,string::size_type ix){// ,string string::size_type
return str[ix];
}
int main(){
string s("a value");
cout<0)='A';// s[0] A
cout<return 0;
// , const char &get_val(.......)
}
7. 국부적 대상을 가리키는 바늘로 되돌아오지 마라
국부 대상을 가리키는 바늘을 되돌려주는 것도 잘못된 것이다. 함수가 끝나면 국부 대상은 방출되고 되돌아오는 바늘은 존재하지 않는 대상을 가리키는 현수 바늘이 된다.(5.11)