AI智能
改变未来

c++学习(第13天)深拷贝与浅拷贝(黑马程序员学习笔记)

浅拷贝:简单的赋值拷贝操作

#include<iostream>using namespace std;//深拷贝与浅拷贝问题class person{public:person(){cout << "构造函数" << endl;}person(int age1){age2 = age1;cout << "有参函数" << endl;}~person(){cout << "析构函数" << endl;}int age2;};void test(){person p(18);cout << "p的年龄为:" << p.age2 << endl;person p1(p);//浅拷贝cout << "p1的年龄为:" << p1.age2 << endl;}int main() {test();system("pause");return 0;}

深拷贝:在堆区重新申请空间,进行拷贝操作
注意:
学习深拷贝之前,一定要掌握new关键字使用,new 关键字使用

#include<iostream>using namespace std;//深拷贝与浅拷贝问题class person{public:person(){cout << "构造函数" << endl;}person(int age1,int height){age2 = age1;//利用new 关键字开辟的内存空间,返回的是内存空间的地址height2 = new int(height);cout << "有参函数" << endl;}person(const person &p){age2 = p.age2;//浅拷贝//height2 = p.height2;浅拷贝height2 = new int(*p.height2);//深拷贝cout << "拷贝构造函数" << endl;}~person(){//析构函数的作用:将堆区开辟的内存空间释放掉if(height2 !=NULL){delete height2;height2 = NULL;}cout << "析构函数" << endl;}int age2;//int 类型的指针int* height2;};void test(){person p(18,175);cout << "p的年龄为:" << p.age2 << endl;cout << "p的身高为:" << *p.height2 << endl;person p1(p);cout << "p1的年龄为:" << p1.age2 << endl;cout << "p1的身高为:" << *p1.height2 << endl;}int main() {test();system("pause");return 0;}


初始化列表

构造函数():属性1(值1),属性2(值2)... {}
#include<iostream>using namespace std;class person{public://传统构造函数/*person(int a,int b,int c){age = a;height = b;weight = c;cout << "构造函数" << endl;}*///初始化列表person(int a, int b, int c) :age(a), height(b), weight(c){}void printperson(){cout << "age:" << age << endl;cout << "height:" << height<< endl;cout << "weight:" << weight << endl;}private:int age;int height;int weight;};int main(){person p(18,175,100);p.printperson();system("pause");return 0;}


静态成员

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量
#include<iostream>using namespace std;class person{public://静态成员函数static void func(){cout << "静态成员函数" << endl;}};void test(){//调用静态成员函数//1.通过对象访问person p;//p.func();//2.通过类名访问person::func();}int main(){test();system("pause");return 0;}

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » c++学习(第13天)深拷贝与浅拷贝(黑马程序员学习笔记)