构造函数:
作用:初始化类中的数据成员
特点:
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、如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。