• C++之类(二)


    接着上次的继续写,我们上次在类里面定义了一个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。大部分的类都不需要显式的析构函数,当然,析构函数并不仅限于用来释放资源。一般而言,析构函数可以执行任意操作,该操作是类设计者希望在该类对象的使用完毕之后执行的。


  • 相关阅读:
    安卓基础干货(六):安卓Activity的学习
    安卓基础干货(四):安卓网络编程的学习
    安卓基础干货(三):安卓数据库的学习
    安卓基础干货(二):安卓测试以及解析
    Broadcast 源码笔记
    使用smb 将vm Ubuntu磁盘 挂载到windwos
    libbinder -- BinderService
    Android属性系统
    AndroidO -- 背光手动调节流程
    Typora+PicGo-Core+gitee实现上传服务
  • 原文地址:https://www.cnblogs.com/zy666/p/10504352.html
Copyright © 2020-2023  润新知