64,688
社区成员
发帖
与我相关
我的任务
分享
struct SCCnum
{
int leader;
int num;
SCCnum(int i, int j) : leader(i), num(j){};
};
vector<SCCnum> sn;
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答![/quote]
返回的是一个SCCnum的匿名对象其leader=1, num=2和
SCCnum temp(1,2);
sn.push_back(temp);效果一样[/quote]
所谓匿名对象是不是就是在内存里临时开出来一块地方,在进行完这次push_back()操作之后,很快就会被os收回?[/quote]
匿名对象只存在构造该对象的那行代码,离开构造匿名对象那行代码后立即调用析构函数。[/quote]
好的!这下完全懂了!非常感谢!
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答![/quote]
返回的是一个SCCnum的匿名对象其leader=1, num=2和
SCCnum temp(1,2);
sn.push_back(temp);效果一样[/quote]
所谓匿名对象是不是就是在内存里临时开出来一块地方,在进行完这次push_back()操作之后,很快就会被os收回?[/quote]
匿名对象只存在构造该对象的那行代码,离开构造匿名对象那行代码后立即调用析构函数。
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答![/quote]
返回的是一个SCCnum的匿名对象其leader=1, num=2和
SCCnum temp(1,2);
sn.push_back(temp);效果一样[/quote]
所谓匿名对象是不是就是在内存里临时开出来一块地方,在进行完这次push_back()操作之后,很快就会被os收回?
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答![/quote]
返回的是一个SCCnum的匿名对象其leader=1, num=2和
SCCnum temp(1,2);
sn.push_back(temp);效果一样
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答![/quote]
vector负责开辟内存空间,然后将temp变量里的
内容复制(实际上调用拷贝构造函数,复制一份temp的内容)到sn这个vector中去
至于vector内部如何来实现开辟内存空间的,得查查资料看源码了,我也没深入了解
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答!
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答!
SCCnum temp(1,2);
sn.push_back(temp);
我可以理解为先调用构造函数来在内存中创建temp这个对象,然后再把temp变量里的内容复制到sn这个vector中去。
那请问这第二种方式在内存中是怎么进行的呢?是不是先在内存中创建了一个临时的SCCnum这个类的对象(跟temp一样,只不过是临时的),然后把这里面内容复制到sn里呢?那SCCnum(1,2)作为sn.push_back()的参数,实际上是将什么传进了sn.push_back()呢(也就是SCCnum(1,2)的返回值是啥啊?)?
我刚开始学编程,多谢大家的热心回答!
第二种是对的吧! vector其实类似于数组的。
vector的存储地址是连续的,在定义一个<int>类型vector后,
长度和容量都是0,但是插入第一个元素后,ivec的容量是256,长度是1,
当插到第256个时,重新拷贝,分配2倍的空间
对于你说的第一种自己也可以new空间的话,你可以打印看看,
你先用第一种方法new一次的,然后在用第二种方法push一个数据!
把两个数据的地址看看,是不是连续的?看你的new的是不是对vector的操作