首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

vetcor 作为函数参数的有关问题

2012-08-01 
vetcor 作为函数参数的问题准备在一个类里面操作一个全局的数据结构class node{public:node(vectorint &

vetcor 作为函数参数的问题
准备在一个类里面操作一个全局的数据结构 
class node
{
public:
  node(vector<int> & _a){ a = _a }
  work(){
  //这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么
  }
private :
  vector <int > a;
}

[解决办法]

C/C++ code
#include "stdafx.h"#include <vector>using std::vector;class Node{private:    vector<int> m_vct;public:    Node(vector<int>& v_vct)    {        m_vct = v_vct;    }    void work()    {        m_vct.push_back(236545);    }};int _tmain(int argc, _TCHAR* argv[]){    vector<int> vct;     Node node(vct);    node.work();        //运行到这,vct中元素个数为0,node.m_vct元素个数为1    system("pause");    return 0;}
[解决办法]
vector的运算符= 应该是把vector的内容逐个复制了吧,所以work()里面操作的是node对象的成员变量,跟全局没有关系吧
[解决办法]
就算是传指针进函数里,也要对指针操作,才能改变其内容吧。
[解决办法]
C/C++ code
class node{public:    node(std::vector<int> & _a):a(_a){}    void work(){        //这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么    }private :    std::vector <int > &a;};
[解决办法]
探讨

C/C++ code

class node
{
public:
node(std::vector<int> &amp; _a):a(_a){}
void work(){
//这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么
}
private :
std::vector <int > &amp;a;这不初始化应该编译不过吧,不过如果a是别名的话,操作的应该是全局变量
};

[解决办法]
探讨

引用:

引用:

C/C++ code

class node
{
public:
node(std::vector<int> &amp;amp;amp; _a):a(_a){}
void work(){
//这里直接操作 a ,对a 的改变,会最终反映到 _a 这个全局变量中么
}
private :
std::vect……
……

[解决办法]
楼主不用想了,一楼的构造函数内有误!尽管v_vct是全局vector的引用,但是m_vct = v_vct将全局vector完全复制给m_vct,操作m_vct对全局vector没有半毛钱影响~~~四楼正解!
[解决办法]
这个就是c和c++的区别 常说传引用比传指针安全 因为引用必须初始化 

C/C++ code
int a = 1;int &b = a;int *p;p = &a; 

热点排行