“ string temp(s);”其中“ s”为字符串

问题描述 投票:-1回答:1
void printAllPermutations(string s) 
{ 

   // Sorting String 
   string temp(s); 
   sort(temp.begin(), temp.end()); 

   // Print first permutation 
   cout << temp << endl; 

   // Finding the total permutations 
   int total = calculateTotal(temp, temp.length()); 
   for (int i = 1; i < total; i++)  
   { 
       nextPermutation(temp); 
   } 
} 

int main()  
{ 
   string s = "AAB"; 
   printAllPermutations(s); 
} 

string's'是函数printAllPermutations()的形式参数。我的疑问是:字符串温度如何?当's'也是一个字符串,而'temp'是需要创建的新字符串时写的?

c++ string syntax parameter-passing declaration
1个回答
2
投票

声明

string temp(s);

direct initializationtemp。编译器将找到最匹配的构造函数重载,该重载将是string的复制构造函数。这意味着您实际上是从temp复制构建s,它等效于

string temp = s;

这意味着temp将是s的副本。


考虑到printAllPermutations函数按值接受参数s,您实际上并不需要temp变量,您可以直接对s进行操作,因为它将依次是字符串的副本您在呼叫printAllPermutations时使用的。

© www.soinside.com 2019 - 2024. All rights reserved.