构造函数析构函数带参数的构造函数默认参数的构造函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<类名>::~<默认析构函数名>()
{
}
默认析构函数是一个空函数。
#include<iostream> 对象p1 0
using namespace std;
class Point{
1
private: int x,y; public:
对象p2 0
Point();//构造函数声明 ~Point();//析构函数声明
void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl;
}
};
Point::Point() //构造函数定义
{ x=0;y=1;cout<<"Construct is called!"<<endl;
}
void main(){
Point p1;//定义对象并自动调用构造函数
Construct is called! x= 10; y= 10 Construct is called! x= 0; y= 0 Construct is called! x= 5; y= 0
Point p3(5); //传一个参数,第二个用缺省值
p3.print();
}
5. 构造函数的重载
一个类中可以具有几个构造函数,每个都去适合不同的场合,
1. 构造函数
构造函数是一种用于创建对象的特殊的成员函数: 1)当创建对象时,系统自动调用构造函数,不能直接调用; 2)构造函数名与类名相同; 3)一个类可以拥有多个构造函数(重载); 4)构造函数可以有任意类型的参数,但不能具有返回类型。 构造函数的作用是: 为对象分配空间;对数据成员赋初值;请求其他资源。 如果一个类没有定义构造函数,编译器会自动生成一个不带参 数的默认构造函数,其格式如下:
Point(int,int);//声明带参数的构造函数 void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
对象p1 10
10
Point::Point(int vx, int vy){
x=vx ; y=vy; //用传递来的参数对私有变量x,y赋初值
<类名>::<默认构造函数名>() { }//此构造函数只创建对象,不做初始化
#include<iostream> 对象p1 using namespace std;
0
class Point{ private: int x,y; public:
Point();//构造函数声明
1
Construct is called! x= 0; y= 1
对象p1 10
对象p2 0
对象p3 5
10
0
0
Point::Point(int vx,int vy) {
x=vx ; y=vy; //用传递来的参数对私有变量x,y赋初值
cout<<"Construct is called!"<<endl;
} void main(){
Point p1(10,10);//传两参数 p1.print(); Point p2; //不传参数取缺省值 p2.print();
这些构造函数靠所带的参数类型或个数的不同来区分,实际上是对
构造函数的重载。如下例: #include<iostream> using namespace std; class Point{ private: int x,y; public: Point(); //声明无参数的构造函数 Point(int vy); //声明带1个参数的构造函数 Point(int vx,int vy ); //声明带2个参数的构造函数 void print(){ cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
1
void print(){
cout<<"x= "<<x<<";"
<<"y= "<<y<<endl;
}
};
Point::Point() t;"Construct is called!"
<<endl;
}
对象p1:Construct is called!
x= 0; y= 1
p1.print();
}
2. 析构函数
析构函数是一种用于销毁对象的特殊的成员函数: 1)当一个对象作用域结束时,系统自动调用析构函数; 2)析构函数名字为符号“~”加类名; 3)析构函数没有参数和返回值。 4)一个类中只能定义一个析构函数,析构函数不能重载。
析构函数的作用是进行清除对象,释放内存等。 如同默认构造函数一样,如果一个类没有定义析构函数,编 译器会自动生成一个默认析构函数,其格式如下:
cout<<"Construct is called!"<<endl;
}
void main(){
Point p1(10,10); //定义对象p1,并给构造函数传递实参
p1.print(); }
Construct is called! x= 10; y= 10
4. 默认参数的构造函数
在构造函数中允许指定函数参数的默认值,这些默认值在函数调用者不 确定参数时可以作为参数来使用。对于所有参数都定义了默认值的构造函 数,当它被调用时,允许改变传递参数的个数。如下例:
#include<iostream> using namespace std; class Point{ private: int x,y; public:
Point(int vx=0,int vy=0 );//声明缺省参数的构造函数 void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
Destruct is called! 对象p2:Construct is called!
x= 0; y= 1
Destruct is called!
Point::~Point() { //析构函数定义 cout<<"Destruct is called!" <<endl;
} void fun(){
cout<<"对象p1:"; Point p1; p1.print(); } void main(){ fun(); cout<<"对象p2:"; Point p2; p2.print(); }
3. 带参数的构造函数
不带参数的构造函数,其对象的初始化是固定的。要想在建立 对象时,传递一定的数据来进行初始化就要引入带参数的构造 函数了。 如下例: #include<iostream> using namespace std; class Point{ private:int x,y; public:
{
}
默认析构函数是一个空函数。
#include<iostream> 对象p1 0
using namespace std;
class Point{
1
private: int x,y; public:
对象p2 0
Point();//构造函数声明 ~Point();//析构函数声明
void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl;
}
};
Point::Point() //构造函数定义
{ x=0;y=1;cout<<"Construct is called!"<<endl;
}
void main(){
Point p1;//定义对象并自动调用构造函数
Construct is called! x= 10; y= 10 Construct is called! x= 0; y= 0 Construct is called! x= 5; y= 0
Point p3(5); //传一个参数,第二个用缺省值
p3.print();
}
5. 构造函数的重载
一个类中可以具有几个构造函数,每个都去适合不同的场合,
1. 构造函数
构造函数是一种用于创建对象的特殊的成员函数: 1)当创建对象时,系统自动调用构造函数,不能直接调用; 2)构造函数名与类名相同; 3)一个类可以拥有多个构造函数(重载); 4)构造函数可以有任意类型的参数,但不能具有返回类型。 构造函数的作用是: 为对象分配空间;对数据成员赋初值;请求其他资源。 如果一个类没有定义构造函数,编译器会自动生成一个不带参 数的默认构造函数,其格式如下:
Point(int,int);//声明带参数的构造函数 void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
对象p1 10
10
Point::Point(int vx, int vy){
x=vx ; y=vy; //用传递来的参数对私有变量x,y赋初值
<类名>::<默认构造函数名>() { }//此构造函数只创建对象,不做初始化
#include<iostream> 对象p1 using namespace std;
0
class Point{ private: int x,y; public:
Point();//构造函数声明
1
Construct is called! x= 0; y= 1
对象p1 10
对象p2 0
对象p3 5
10
0
0
Point::Point(int vx,int vy) {
x=vx ; y=vy; //用传递来的参数对私有变量x,y赋初值
cout<<"Construct is called!"<<endl;
} void main(){
Point p1(10,10);//传两参数 p1.print(); Point p2; //不传参数取缺省值 p2.print();
这些构造函数靠所带的参数类型或个数的不同来区分,实际上是对
构造函数的重载。如下例: #include<iostream> using namespace std; class Point{ private: int x,y; public: Point(); //声明无参数的构造函数 Point(int vy); //声明带1个参数的构造函数 Point(int vx,int vy ); //声明带2个参数的构造函数 void print(){ cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
1
void print(){
cout<<"x= "<<x<<";"
<<"y= "<<y<<endl;
}
};
Point::Point() t;"Construct is called!"
<<endl;
}
对象p1:Construct is called!
x= 0; y= 1
p1.print();
}
2. 析构函数
析构函数是一种用于销毁对象的特殊的成员函数: 1)当一个对象作用域结束时,系统自动调用析构函数; 2)析构函数名字为符号“~”加类名; 3)析构函数没有参数和返回值。 4)一个类中只能定义一个析构函数,析构函数不能重载。
析构函数的作用是进行清除对象,释放内存等。 如同默认构造函数一样,如果一个类没有定义析构函数,编 译器会自动生成一个默认析构函数,其格式如下:
cout<<"Construct is called!"<<endl;
}
void main(){
Point p1(10,10); //定义对象p1,并给构造函数传递实参
p1.print(); }
Construct is called! x= 10; y= 10
4. 默认参数的构造函数
在构造函数中允许指定函数参数的默认值,这些默认值在函数调用者不 确定参数时可以作为参数来使用。对于所有参数都定义了默认值的构造函 数,当它被调用时,允许改变传递参数的个数。如下例:
#include<iostream> using namespace std; class Point{ private: int x,y; public:
Point(int vx=0,int vy=0 );//声明缺省参数的构造函数 void print(){
cout<<"x= "<<x<<"; "<<"y= "<<y<<endl; } };
Destruct is called! 对象p2:Construct is called!
x= 0; y= 1
Destruct is called!
Point::~Point() { //析构函数定义 cout<<"Destruct is called!" <<endl;
} void fun(){
cout<<"对象p1:"; Point p1; p1.print(); } void main(){ fun(); cout<<"对象p2:"; Point p2; p2.print(); }
3. 带参数的构造函数
不带参数的构造函数,其对象的初始化是固定的。要想在建立 对象时,传递一定的数据来进行初始化就要引入带参数的构造 函数了。 如下例: #include<iostream> using namespace std; class Point{ private:int x,y; public: