您的位置:首页 > 其它

构造函数与析构函数

2016-03-21 20:53 218 查看
构造函数:

作用:初始化类中的数据成员

特点:

1、在对象创建时,由系统自动调用;

2、构造函数名与类名相同;

3、不能指定返回类型

4、允许为内联,重载,带默认参数值得函数

5、如果类中未声明,系统自动产生一个默认形式的构造函数;

#include<iostream>
using namespace std;
class A
{
private:
int a;
public:
A();
A(int k);
void display();

};
void A::display()
{
cout<<"a = "<<a<<"\n";

}
A::A()
{
a = 3;
}
A::A(int k)
{
a = k;
}
int main()
{
A a1(4);
a1.display();
}


拷贝构造函数:

用类的一个对象去初始化类的另一个对象。

#include<iostream>
using namespace std;
class Point
{
private:
int x,y;
public:
Point(int xx = 0,int yy = 0)
{
x = xx;
y = yy;
}
Point(const Point &p);
int GetX(){return x;}
int GetY(){return y;}

};

Point::Point(const Point &p)
{
x = p.x;
x = p.y;
}
int main()
{
Point A(1,2);
Point B(A);
cout<<B.GetX()<<endl;//用一个对象去初始化另一个对象

}
//////////////////////////////////////////////////////////
void func(Point p)
{
cout<<p.GetY()<<endl;
}
int main()
{
Point A(1,2);
func(A);//函数的形参为类对象,调用函数时实参赋值给形参
}

////////////////////////////////////////////////////
Point &fun2()
{
  static Point A(1,2);
  return A;
}
int main()
{
Point B=fun2(); //当函数的返回值是类对象时,系统自动调用拷贝构造函数
}


析构函数:无返回值,无参数,没有重载。

格式:~类名();

作用:1、完成对象被删除前的一些清理工作

2、对象生命周期结束时,系统自动调用它,然后再释放对象所属的空间。

3、如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: