构造函数与析构函数

构造函数:

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

特点:

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<<"
";

}
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、如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。

原文地址:https://www.cnblogs.com/defen/p/5303632.html