C++的各种函数概念
1、构造函数
类的一种特殊的成员函数,它会在每次创建类的对象时执行。构造函数的名称与类的名称完全相同,并不会返回任何类型,也不会返回void(无类型)。
作用:初始化对象的数据成员。
①默认构造函数
class Shape { public: Shape();//Shape构造函数 void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } int getWidth() { return width; } int getHeight() { return height; } private: int width; int height; }; //定义Shape构造函数 Shape::Shape(void) { cout << "Shape已经被创建" << endl; }
②带参数的构造函数
构造函数带参数,这样在创建对象时就会给对象创建初始值。
class Shape { public: Shape(int w,int h);//带参数的Shape构造函数 void setWidth(int w) { width = w; } void setHeight(int h) { height = h; } int getWidth() { return width; } int getHeight() { return height; } private: int width; int height; }; //定义带参数的Shape构造函数 Shape::Shape(int w,int h) { cout << "Shape已经被创建" << endl; cout << "宽为" << w << endl; cout << "高为" << h << endl; }
2、拷贝构造函数
拷贝构造函数是一种特殊的构造函数,函数的名称和类的名称一致。它的唯一的一个参数是本类型的一个引用变量。该参数是const类型,不可变的。
相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。
当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用到拷贝构造函数:
①一个对象需要通过另外一个对象进行初始化。案例:https://www.cnblogs.com/alantu2018/p/8459250.html
②一个对象以值传递的方式传入函数体。案例:https://www.cnblogs.com/alantu2018/p/8459250.html
③一个对象以值传递的方式从函数返回。
class Shape { public: //带参数的Shape构造函数 Shape(int w, int h) { width = w; height = h; cout << "Shape已经被创建" << endl; } //拷贝构造函数 Shape(const Shape &s) { width = s.width; height = s.height; cout << "调用拷贝构造函数" << endl; } int getWidth() { return width; } int getHeight() { return height; } private: int width; int height; };
3、析构函数
析构函数的名称与类的名称相同,在前面加~作为前缀。它不会返回任何值,也不能带任何参数。它在每次删除对象时执行,有助于释放资源。
4、虚函数
在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数。
作用:实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。