首页 / C++ / C++构造函数&析构函数&组合类
C++构造函数&析构函数&组合类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++构造函数&析构函数&组合类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2375字,纯文字阅读大概需要4分钟。
内容图文
![C++构造函数&析构函数&组合类](/upload/InfoBanner/zyjiaocheng/593/8a40f40f6f6743928296dad058dedcdb.jpg)
C++构造函数&析构函数&组合类
作用: C++在定义类的变量的时候,首先调用构造函数并且在类的变量被释放前调用析构函数。一般来讲,构造函数可以为类内成员变量来初始化,也可以对类内其他类的成员进行初始化。析构函数一般可以进行释放调用的资源。
构造函数:
在C++的类中,构造函数的名字与类的名字相同。构造函数的参数可以由这个类的变量来进行传递。构造函数还可以进行参数重载、参数默认
//class defination
class stu{
public:
stu(int a,int b);
stu(int c);
private:
int age,score,gpa;
}
stu::stu(int a,int b){
age = a;
score = b;
}
stu::stu(int c){
gpa = c;
}
//main
stu a(1,3);//a.age=1,a.score=3
stu b(1);//a.gpa=1
stu c//?
默认构造函数:
上面代码最后一行错了的原因是,c++默认如果class中没有创建构造函数,则自动帮助创建构造函数(stu::stu(){})可是这个构造函数中没有参数也没有什么作用。如果我们一旦自己创建了构造函数,那么默认的构造函数就不会帮我们创建,因此上述代码中我们没有为变量中不需要传值的情况考虑,因此最后一行会报错,解决办法其一是新增一个构造函数(无参数值)其二是对构造函数设置默认参数。
析构函数:
析构函数的名字是在构造函数名字前加上‘~’,并且如果存在多个类,那么析构函数在多个类结束生命周期前,按照构造函数执行顺序的逆序来执行(有点像栈)。
组合类(包容类)
组合类可以看做类的一种嵌套,在一个a类中定义b、c类的变量
class Book{
int a;
}
class Name{
int b;
}
class c{//组合类
Book a;
Name b;
}
其中c为组合类
组合类中的执行顺序:
组合类中优先定义内部子类的变量,然后才是自己的构造函数。
//class defination
class stu{
public:
stu(){
cout << "构造(stu)" << endl;
}
~stu(){
cout << "析构(stu)" << endl;
}
};
class tea{
public:
tea(){
cout << "构造(tea)" << endl;
}
~tea(){
cout << "析构(tea)" << endl;
}
};
class tor{
public:
tor(){
cout << "构造(tor)" << endl;
}
~tor(){
cout << "析构(tor)" << endl;
}
private:
stu a;
tea b;
};
//main
int main(){
tor a;
return 0;
}
//output
构造(stu)
构造(tea)
构造(tor)
析构(tor)
析构(tea)
析构(stu)
显然,在创建tor类变量后执行顺序为内部类构造函数(stu->tea)->自身类构造函数(tor)
组合类中的初始化
class stu{
public:
stu(int a=0){
age = a;
cout << "stu中age为:" << age << endl;
}
void operator=(int a){
this->age = a;
}
private:
int age;
};
class tor{
public:
tor(int for_tor,int for_stu):a(for_stu){/******/
score = for_tor;
cout << "tea中score为:" << score << endl;
}
private:
stu a;
int score;
};
int main(){
tor a(1,2);
return 0;
}
为了在tor中使用stu的构造函数对a进行赋值,需要在tor的构造函数后,使用冒号:引出a的构造函数的参数列表,然后进行参数的赋值。
对于想要赋值多个构造函数的参数的情况,可以使用逗号来分隔。
内容总结
以上是互联网集市为您收集整理的C++构造函数&析构函数&组合类全部内容,希望文章能够帮你解决C++构造函数&析构函数&组合类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。