有关深拷贝和浅拷贝的问题,对于非指针类型而言,有影响吗
#include<iostream>
using namespace std;
#include<string>
class student
{
public:
student() //主动写的默认构造函数
{
m_name = "阿伟";
m_age = 18;
}
student(string name, int age)//含参构造函数
{
m_name = name;
m_age = age;
}
void change()
{
m_name = "asdfasdf";
m_age = 345;
}
void display()
{
cout << "name:" << m_name << endl;
cout << "age:" << m_age << endl;
}
//student(const student& stu); //复制构造函数
private:
string m_name;
int m_age;
};
/*student::student(const student& stu)
{
m_name = stu.m_name;
m_age = stu.m_age;
cout << "这里是复制构造函数" << endl;
}*/
int main()
{
student a("阿斌", 23);
student b = a;
//cout << "这是赋值之前的b" << endl;
//b.display();
student c;
c = a;
cout << "使用了自带的赋值运算符"<<endl;
cout << "c的值为"<<endl;
c.display();
//这里用的不是复制构造函数,而是C++自动重载好的赋值运算符
cout << "初始化后的b" << endl;
b.display();
b.change();
cout << "b的值改变之后"<<endl;
b.display();
cout << "此时a的值" << endl;
a.display();
c.change();
cout << "c的值改变之后" << endl;
c.display();
cout << "此时a的值" << endl;
a.display();
return 0;
}
运行的结果是改变b和c的值,a的值都没有改变
那么,是C++自带的重载赋值运算符和复制构造函数都是浅拷贝,还是因为,深浅拷贝只对于指针而言有区别?