C++深入了解类和对象 --- 构造函数(constructor)

类是一个抽象概念,abstract concept!甚至直接理解为void,并不占用memory。只有对象才是concrete concept,反映了客观事物的内在属性,是个具体值。所以不能在类的成员数据中对数据初始化。

构造函数完美解决了对于多数据成员初始化的问题。构造函数是一种特殊的成员函数,不需要用户调用,而是在建立对象自动执行。构造函数的名字必须与类名相同,而不能由用户任意命名,以便编译系统能识别并把它作为构造函数处理。不具有任何类型,不返回任何值。其功能由用户定义,根据初始化的要求设计函数体和函数参数。

如下例所示:

#include <iostream>
using namespace std;
class Time
{
public:
    Time();                   // define constructor function
    void set_time();        //class function
    void show_time();       //class function
private:                    //private data members, unaccessable to public
    int hour;
    int minute;
    int sec;
};

Time::Time()
{
    hour = 0;
    minute = 0;
    sec = 0;
}
void Time::set_time()
{
    cin >> hour;
    cin >> minute;
    cin >> sec;
}

void Time::show_time()
{
    cout << hour << ":" << minute << ":" << sec << endl;
}

int main()
{
    Time t1;              //setup object t1 and invoke the constructor --- initialize the member data.
    t1.set_time();
    t1.show_time();
    
    Time t2;
    t2.set_time();
    t2.show_time();
    return 0;
}

建立对象Time t1 Time t2时自动执行构造函数,作用是为了对象中的各数据成员赋初值为0。只有在在建立对象是才执行赋值语句,因为class是abstract,不占用内存,而二进制都是依赖memory的。

1. 类对象进入作用域时自动调用构造函数,而且只执行一次。

2.构造函数没有返回值,因此不需要在构造函数时声明类型,这和一般函数的一个重要的不同点。绝不能出现 int Time或者void Time。

3.构造函数不需要用户调用,也不能被调用!

4.如果用户没有定义构造函数,那么C++系统会自动生成一个构造函数,只是这个构造函数是空的,也没有参数,不执行初始化操作。

构造函数是一个基本概念,下面会细分各种应用场合---带参数的构造函数;用参数初始化表对数据成员初始化;使用默认参数的构造函数。

猜你喜欢

转载自blog.csdn.net/nearcsy/article/details/80891191
今日推荐