Passe a string por referência em C ++

Passe a string por referência em C ++
A referência C ++ é um nome para uma variável que já existe. Uma referência a uma variável não pode ser alterada para se referir à outra variável depois de inicializada. Ponteiros ou referências podem ser passadas como parâmetros para funções em C++. Assim, o resultado é idêntico em ambas as circunstâncias. A passagem por referência permite uma função atualizar uma variável sem criar uma cópia. Devemos declarar variáveis ​​de referência para que o parâmetro e a variável sejam passados ​​para compartilhar o mesmo local de memória. Quaisquer alterações que ocorram no parâmetro também afetam a variável.

Com a ajuda de exemplos, entenderemos a aprovação C ++ por abordagem de referência e como fornecer ponteiros como argumentos para funções neste artigo. Os parâmetros passados ​​para funcionar como ponteiros são os mesmos que qualquer outro valor ao passar um valor por referência. Como resultado, você deve fornecer tipos de ponteiros para os argumentos da função, como na função swap (), que trocam os valores de várias variáveis ​​inteiras abordadas por seus argumentos.

Exemplo 1: Programa de aprovação por referência sem ponteiros em C++

Aqui, passamos um valor por referência sem utilizar a declaração do ponteiro. Abaixo está o programa de ilustração para aprovar uma variável por referência.

Inicialmente, incluímos os arquivos do cabeçalho para a implementação do programa na seção de cabeçalho. Na próxima etapa, temos uma definição de função para trocar valores. A função recebe uma troca de nome e a função leva duas referências variáveis ​​de string como um parâmetro. As variáveis ​​de string que a função Swap aplicará são definidas como seqüências de referência "STR1" e "STR2".

Então, na função, criamos uma variável "Temp", que passamos a variável "str1". Depois disso, o "STR2" é atribuído a "STR1" e depois "STR2" tem o "STR2". Dessa forma, o algoritmo de troca é aplicado à sequência de referência.

Temos nossa principal função, onde duas strings são declaradas como "str_a" e "str_b" e inicializadas com alguns valores de string. Os valores da string serão impressos antes que a função de troca seja aplicada. Em seguida, invocamos a função de troca na função principal e passamos a string definida na função principal. Depois disso, a corda trocada será impressa.

#incluir
usando namespace std;
Void Swap (String & Str1, String & Str2)
temp de string;
temp = str1;
str1 = str2;
str2 = temp;

int main ()

string str_a = "c ++", str_b = "programação";
cout<< "Strings Before swapping" <cout<< "string 1 : " <cout<< "String 2 : " <swap (str_a, str_b);
cout<< "\nStrings After swapping" <cout<< "string 1 : " <cout<< "string 2 : " <retornar 0;

O resultado mostra a string antes de trocar e depois de trocar pela sequência de referência passada na função.

Exemplo 2: Programa de aprovação por referência com ponteiros em C++

Como no exemplo anterior, vimos apenas a sequência de passagem por referência. Portanto, usaremos ponteiros por referência em C ++ neste exemplo.

O programa começa criando uma função que é representada com o nome "Swapstring" e passa por strings de dois pontos como um argumento. Então, chamamos a função principal do programa. Na função principal, as duas cordas são nomeadas "STR1" e "STR2", respectivamente. Essas variáveis ​​de string são inicializadas com a sequência de palavras.

Em seguida, chamamos a função de "swapstring", para a qual as variáveis ​​de string "STR1" e "STR2" são aprovadas. As cordas serão trocadas nesta definição de função na função principal e impressas. Depois disso, chamamos a função de "swapstring" fora da função principal para trocar as strings especificados.

#incluir
usando namespace std;
Swapstring void (String*, String*);
int main ()

string str1 = "hello", str2 = "amigos";
cout<< "Strings Before swapping" <cout<< "Str1 = " << str1 <cout<< "Str2 = " << str2<Swapstring (& str1, & str2);
cout<< "\nStrings After swapping" <cout<< "str1 = " << str1 <cout<< "str2 = " << str2 <retornar 0;

Void Swapstring (String* S1, String* S2)
temp de string;
temp = *s1;
*s1 ​​= *s2;
*s2 = temp;

Portanto, os resultados da passagem de referências de string com ponteiros são mostrados no gráfico a seguir.

Exemplo 3: Programa de aprovação do objeto String por referência em c++

Mesmo que uma função não possa modificar o objeto String de origem no programa de chamada, a passagem dos objetos C ++ String via referência é bastante comum. Os objetos geralmente são bastante grandes e, portanto, podem ser caros comparados à quantidade de armazenamento que eles usam e o tempo necessário para construir um clone deles ao passar por valor por valor. Então, geralmente, passar objetos por referência salva a memória e o tempo.

A única desvantagem de passar um objeto por referência é que ele pode alterar o objeto de origem que foi passado para a função. Isso não é desejado. Se não queremos atualizar um objeto na função, preferimos dificultar.

Temos uma definição de função no seguinte programa como "InputString", para o qual passamos a referência de string. Em seguida, declaramos um objeto String "Mystr" na função principal e a sequência de objeto "Mystr" contém uma string de uma palavra.

Depois disso, chamamos um "inputString" e passamos esse objeto de string para ele. Temos uma definição de função "InputString" fora da função principal, que cria uma nova referência de objeto de string do "mystr". A nova string é definida como "Newstr" e depois inicializada no corpo da função. Modificamos a sequência de objetos “Newstr” e imprimimos o novo objeto String.

#incluir
#incluir
usando std :: cout;
usando std :: endl;
usando std :: string;
void inputString (string &);
int main ()

string mystr = "wel";
cout<< "String value: " <InputString (mystr);
cout<< "String value now :" <retornar 0;

Void InputString (String & Newstr)

cout<< "String value in function :" <Newstr = newsttr + "venha";
cout<< "String value now in function :" <

O gráfico abaixo representa os valores resultantes da string da sequência de origem e a string alterada.

Exemplo 4: Programa de aprovação de um objeto de string constante por referência em c++

O compilador jogará uma falha se uma referência for passada para o objeto constante. Podemos resolver esse problema usando uma referência de variável constante. Isso impede que a variável para a qual os pontos de referência sejam alterados.

Primeiro, temos a definição de função "Displaystring", onde uma referência de string constante é passada. As cordas constantes são definidas e inicializadas na função principal como "str1" e "str2". Depois disso, passe essas seqüências constantes para a função "InputString". Invocou a função fora da função principal, onde declaramos uma variável de string constante “mystr”.

#incluir
#incluir
usando std :: cout;
usando std :: endl;
usando std :: string;
Void DisplaysTring (const String &);
int main ()

const string str1 = "infinix";
String str2 = "iPhone";
cout<< "str1 :" << str1 <DisplaysTring (STR1);
cout<< "str2 : " << str2 <Displaystring (STR2);
retornar 0;

Void DisplaysTring (Const String & Mystr)

cout<< "MyStr : " <

Um objeto não constante é passado para uma função através de uma referência de objeto constante. Portanto, não recebemos erros de compilação no código.

Conclusão

As referências permitem uma função afetar o valor de um argumento, que pode ser benéfico em algumas situações. Const referências, por outro lado, verifique se a função não altera o argumento. Assim, concluímos o artigo aqui com o exemplo de demonstração em C ++ e esperamos que possa ser útil.