问题: 生成一个vector <string> Vec 对象,我该如何将该对象传给一个函数(值传递),请问我该怎么定义形参? 回答: 以 vector<int> vec; 为例说明。有多种函数声明方式: 1. void deal( vector<int> vec ); 2. void deal( vector<int>* pvec ); 3. void deal( const vector<int>* pvec ); // 在函数内不能改变 pvec 指向的对象 4. void deal( vector<int>& vec ); 5. void deal( const vector<int>& vec ); // 在函数内不能改变 vec 对象
其对应的调用分别是: 1. deal( vec ); 2. deal( &vec ); 3. deal( &vec ); 4. deal( vec ); 5. deal( vec ); 补充: 3. void deal( const vector<int>* pvec ); //调用时不会调用拷贝构造函数 5. void deal( const vector<int>& vec ); // 在函数调用时调用了vector的拷贝构造函数
|