码迷,mamicode.com
首页 > 其他好文 > 详细

构造函数和析构函数

时间:2020-07-10 21:03:58      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:构造   private   运行   利用   函数名   回收   ima   pause   去掉   

类名(){}

1.构造函数没有返回值也不写void

2.函数名称与类名相同

3.构造函数可以有参数,因此金额已发生重载

4.程序在调用对象时候会自动调用构造,无需手动调用,而且只会调用一次

析构函数语法 ~类名(){}

1.析构函数,没有返回值也不写void

2.函数名称与类名相同,在名称前加上~

3.析构函数不可以有参数,因此不可以发生重载。

4.程序在对象销毁前会自动调用析构,无需手动调用,而且只会调用一次

#include<iostream>
using namespace std;
class person {
public:
person() {
cout << "构造函数的调用" << endl;
}

};
void test01() {
person p;//建个对象
}
int main(){
test01();////运行之后程序会自动调用构造函数
return 0;
}

技术图片

 

 构造函数的分类及调用

两种分类方式:按参数分为:有参构造和无参构造

按类型分为:普通构造和拷贝构造

三种调用方式:

括号法  注意,调用默认构造函数时不要加()直接person p1; person p2(10);person p3(p2)

显示法  person p1; person p2=person(10) ; person p3=person(p2);  等号右侧叫匿名对象,当前行执行后,系统会立即回收匿名对象

注意:不要利用拷贝函数初始化匿名对象,编译器会认为这是对象声明person(p3)编译器会把小括号去掉 person p3该对象已经存在

隐式转换法

person p4=10;//相当于 person p4=person(10)

person p5=p4

 

#include<iostream>
using namespace std;
class person {
private: int age;
public:
person() {
cout << "无参构造函数的调用(默认)" << endl;
}
person(int a){
age=a;
cout << "有参构造函数的调用" << endl;
}
//拷贝构造函数
person(const person &p){
cout << "拷贝构造函数的调用" << endl;
age=p.age;
}
~person(){
cout<<"析构函数的调用"<<endl;
}

};
void test01() {//括号法,显示法,隐式转换
person p1;
//建个对象 (在栈上的数据,在test01执行完毕后,释放这个对象)
person p2(10);//(有参构造函数)
person p3(p2);
}
int main(){
test01();////运行之后程序会自动调用构造函数
system("pause");
return 0;
}

 

构造函数和析构函数

标签:构造   private   运行   利用   函数名   回收   ima   pause   去掉   

原文地址:https://www.cnblogs.com/Stephen-wife/p/13281018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!