C++ vector 赋值问题
先看如下一段代码
期望输出 11 wang1
结果输出 不同编译器表现不同
vector 容器赋值时,调用的是vector元素的赋值构造函数,我重写了对象的赋值构造函数,赋值构造函数
虽然在vector容器赋值时调用了,但是计算的结果完全不正确,期望高手指点,期待同行探讨
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class student
{
public:
student(int id,char *name)
{
//cout<<"student(int id,char *name)"<<endl;
m_id = id;
strcpy(m_name,name);
}
student()
{
cout<<"student()"<<endl;
m_id = 0;
strcpy(m_name,"");
}
student& operator=(const student& s)
{
cout<<"const student& operator=(const student& s)"<<endl;
m_id = s.m_id+100;
strcpy(m_name,s.m_name);
return *this;
}
student(const student& s)
{
cout<<"s.m_id = "<<m_id<<"\ts.m_name = "<<s.m_name<<endl;
cout<<"m_id = "<<m_id<<"\tm_name = "<<m_name<<endl;
m_id = s.m_id+10;
strcpy(m_name,s.m_name);
}
friend ostream& operator << (ostream & of,student &stu)
{
of<< stu.m_id<<'\t'<<stu.m_name<<endl;
return of;
}
private:
int m_id;
char m_name[20];
};
int main()
{
vector<student> stlist;
stlist.push_back(student(1,"wang1"));
/*
stlist.push_back(student(2,"wang2"));
stlist.push_back(student(3,"wang3"));
stlist.push_back(student(4,"wang4"));
stlist.push_back(student(5,"wang5"));
*/
cout<<"=============================="<<endl;
vector<student> stulist = stlist;
vector<student>::iterator it = stulist.begin();
for( ; it!=stulist.end(); it++)
{
cout<<*it<<endl;
}
return 0;
}
期望输出 11 wang1
结果输出 不同编译器表现不同
vector 容器赋值时,调用的是vector元素的赋值构造函数,我重写了对象的赋值构造函数,赋值构造函数
虽然在vector容器赋值时调用了,但是计算的结果完全不正确,期望高手指点,期待同行探讨
...全文
相关推荐
piscine_cpp
在"piscine_cpp"的练习中,你可能会用到这些工具来解决问题。总的来说,"piscine_cpp"是一个全面的C++学习资源,涵盖了从基础到高级的广泛主题。
CPP132:CPP132的笔记和作业回购
**数组和容器**:理解数组的基本使用,并学习C++标准库中的容器,如vector、list、set、map等,它们是STL的重要组成部分。5.
c++实现矩阵类
在C++编程中,矩阵类的设计是数据结构和算法领域中的一个重要话题,尤其对于处理线性代数问题的程序员来说。
ThuCPP:thu_Cpp 问题集
【标题】"ThuCPP:thu_Cpp 问题集"是一个专门为学习C++语言而设计的资源集合,源自清华大学2015年的C++基础课程。
ICS3U-Assignment4-CPP
这个作业可能涉及使用C++语言来解决特定的编程问题或者实现特定的功能。


