zoukankan      html  css  js  c++  java
  • 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。大部分的类都不需要显式的析构函数,当然,析构函数并不仅限于用来释放资源。一般而言,析构函数可以执行任意操作,该操作是类设计者希望在该类对象的使用完毕之后执行的。


  • 相关阅读:
    Android4.2以及最新SDK的尝鲜使用
    UVA 1524
    StringTokenizer类的使用
    Tuxedo入门学习
    ReviewBoard安装和配置札记
    一步一步写算法(之单向链表)
    腾讯2014年实习生招聘笔试面试经历
    二路单调自增子序列模型【acdream 1216】
    [置顶] c# 验证码生成
    Android Service 服务(一)—— Service
  • 原文地址:https://www.cnblogs.com/zy666/p/10504352.html
Copyright © 2011-2022 走看看