by reference,by value的问题,请教!
代码如下:
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
class IntSequence
{
private:
int value;
public:
IntSequence( int init):value(init){}
int operator()()
{
return value++;
}
void getvalue()
{
cout<<value<<endl;
}
};
int main()
{
vector<int> coll;
IntSequence seq(13);
generate_n<back_insert_iterator<vector<int> >,int,IntSequence&>(back_inserter(coll),9,seq);
//by reference方式,对象seq的成员变量value应该会随之变化
seq.getvalue();
//然而,输出value仍然为13,不解,由此对vs2005产生了疑问?
generate_n(back_inserter(coll),9,seq);
copy(coll.begin(),coll.end(),ostream_iterator<int>(cout," "));
return 0;
}
...全文
相关推荐
详解Java的call by value和call by reference
详解Java的call by value和call by referenceJava是一种面向对象的编程语言,它支持两种传递参数的方式:call by value和call by reference。
条款20: 宁以pass-by-reference-to-const 替换 pass-by-value
"条款20: 宁以pass-by-reference-to-const 替换 pass-by-value,提升效率,避免对象切割问题"在C++编程中,传递参数的方式主要有两种:pass-by-v
Pass by value VS Pass by Reference
### Java中的值传递与引用传递详解在Java编程语言中,方法调用时参数的传递方式有两种:值传递(Pass-by-Value)和引用传递(Pass-by-Reference)。
C C++之指标 (pointer)参考 (reference) 观念整理与常见问题
3. call by value, call by address (或 call by pointer), call by reference?
SSD5 Exam 1 Multiple-Choice 答案
选项如下:- (a) 它取决于函数的定义位置- (b) 它由编译器自动选择- (c) 它是引用传递(call-by-reference)- (d) 它是值传递(call-by-value)**正确答案是


