自建网站h5,网站推广怎么发外链,做赚钱问卷调查的网站好,最新网络营销方式这里写目录标题 类的构造函数类的析构函数 写在最前面的话 ——构造函数和析构函数是两个特殊的成员函数#xff0c;都没有返回值#xff0c;构造函数名和类名相同#xff0c;析构函数名只是在类名前加上 ~ 构造函数主要用来在创建对象时给对象中的数据成员赋值#xff0c;… 这里写目录标题 类的构造函数类的析构函数 写在最前面的话 ——构造函数和析构函数是两个特殊的成员函数都没有返回值构造函数名和类名相同析构函数名只是在类名前加上 ~ 构造函数主要用来在创建对象时给对象中的数据成员赋值主要目的是初始化对象 析构函数的功能与构造函数正好相反析构函数是用来释放对象的再删出对象前对对象进行清理工作。
类的构造函数
当建立一个类的对象时构造函数就会默认被调用如果用户不提供构造函数编译器就会自动实现一个空的构造函数。所以构造函数的主要作用就是完成某些初始化的工作一般来说比如设置类成员属性操作对成员数据赋值等
构造函数类内实现 1 #includeiostream2 using namespace std;3 class Person4 {5 public:6 Person(int age, int height)7 {8 this-age age;9 this-height height;10 };11 void show()12 {13 coutage ageendl;14 coutheight heightendl;15 }16 private:17 int age;18 int height;19 20 21 };22 23 24 int main()25 {26 Person p(45,123);27 p.show();28 29 return 0;30 }
~ 类外实现 1 #includeiostream2 using namespace std;3 class Person4 {5 public:6 /* Person(int age, int height)7 {8 this-age age;9 this-height height;10 };*/11 Person(int age,int height);//注意一定要在类内先声明12 void show()13 {14 coutage ageendl;15 coutheight heightendl;16 }17 private:18 int age;19 int height;20 21 22 };23 Person::Person(int age,int height)24 {25 26 this-age age;27 this-height height;28 }29 30 31 int main()32 {33 Person p(45,123);34 p.show();35 36 return 0;37 }
复制构造函数 1 #includeiostream2 using namespace std;3 class Person4 {5 public:6 /* Person(int age, int height)7 {8 this-age age;9 this-height height;10 };*/11 Person(int age,int height);//注意一定要在类内先声明Person::Person(Person pp);//复制构造函数12 void show()13 {14 coutage ageendl;15 coutheight heightendl;16 }17 private:18 int age;19 int height;20 21 22 };23 Person::Person(int age,int height)24 {25 26 this-age age;27 this-height height;28 }29 Person::Person(Person pp)30 {this-age pp.age;this-height pp.height; }int main(){Person p(45,123);p.show();Person pp(p);pp.show();return 0;}
注意如果当用户忘记显示声明的默认构造函数会导致链接出错所以当我们使用自定义的默认构造函数时必须能实现哪怕是空实现。
类的析构函数 1 #includeiostream2 #includestring.h3 using namespace std;4 class Person5 {6 public:7 Person();8 ~Person();9 void show();10 char* message;11 };12 Person::Person()13 {14 15 message new char[1024];16 }17 void Person::show()18 {19 strcpy(message,fsvfg);20 21 coutmessage messageendl;22 }23 Person::~Person()24 {25 delete []message;26 }27 int main()28 {29 Person p;30 p.show();31 32 return 0;33 }34
注意 一个类中只能出现一个析构函数 析构函数不能发生重载 不管是构造函数还是析构函数都不能使用return语句没有返回值
在不同的环境下构造函数和析构函数调用规则如下
自动变量的作用域是某个模块当此模块被激活时调用构造函数当退出此模块时调用析构函数。
全局变量在进入main函数之前调用构造函数在程序终止时调用析构函数。
动态分配的对象在使用new为对象分配内存时调用构造函数使用delete删除对象时调用析构函数。
临时变量是编译器为支持计算自动产生的临时变量生存期的开始和结束点会调用构造函数和析构函数。