C++之类(二)

来源:互联网 发布:mac os sierra下载 编辑:程序博客网 时间:2024/06/04 17:52

接着上次的继续写,我们上次在类里面定义了一个set函数用来给类的数据成员赋值。其实,类本身提供了一个特殊的函数——构造函数。构造函数的函数名和类名相同,无返回值。构造函数的作用就是给类的数据成员初始化(赋值)。我们来新建一个类吧。

class MyClass{int num;char str[10];double f;MyClass(int num,char *str,double f)//构造函数{this->num = num;strcpy(&this->str,str);this->f = f;}}
这里我们看到了“this指针”,这个指针指向类本身。我们构造函数的参数列表里面形式参数的名字和MyClass这个类的数据成员的名字一样。这个时候,
我们无法区分形式参数和数据成员,因此使用了this指针。这就避免了名字相同这个问题。构造函数和上次我们使用的set函数不一样。set函数需要我们去调用,而构造函数不需要程序员去调用。编译器会自动使用构造函数来初始化该类的对象。当我们没有写自己的构造函数的时候,系统会自动生成一个默认的构造函数。初始化对象的时候就会调用默认构造函数。下面我们来初始化一个类对象

class MyClass{int num;char str[10];double f;MyClass(int num,char *str,double f)//构造函数{this->num = num;strcpy(&this->str,str);this->f = f;}void show(){cout << num << endl;cout << str << endl;cout << f << endl;}}int mian(){MyClass oj(3,"hello",3.14);//初始化对象oj.show();system("pause");return 0;}

每一个对象都有自己的作用域,当对象在超出作用域的时候会自动撤销。对象所占用的资源将被回收。因此,类有另外一个特殊的函数——析构函数。这个函数用来回收资源。析构函数在类对象被销毁时,自动调用。另外,析构函数也没有返回值。还有,它没有任何参数(包括void),因此它不能被重载,而构造函数可以被重载。析构函数的名字是在类名前面加上“~”这个符号。另外构造函数无法声明为const,volatile,static。大部分的类都不需要显式的析构函数,当然,析构函数并不仅限于用来释放资源。一般而言,析构函数可以执行任意操作,该操作是类设计者希望在该类对象的使用完毕之后执行的。


原创粉丝点击