C++函数之类与对象初解3

本文详细介绍了C++中的构造函数与析构函数的概念及其使用方法,包括构造函数的初始化方式、重载特性以及析构函数的资源回收作用。此外,还探讨了this指针的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++函数之类与对象初解3

一、 构造函数

 1、  构造函数是用于创建对象的特殊成员函数。

 2、 当创建对象时,系统自动调用构造函数。

 3、构造函数的作用是:

(1)为对象分配空间

(2)对数据成员赋初值

(3)请求其他资源

4、没有用户定义的构造函数时,系统提供缺省版本的构造函数

5、 构造函数名与类名相同:类名

6、构造函数可以重载

构造参数形式: 类名  对象名[(实参表)];

举例 :

#include <bits/stdc++.h>

class Date

 {     public:

         Date();    // 此处无参构造函数

         Date(int y,int m,int d);

         void showDate();

      private:

              int year, month,day;

      };

  Date::Date()    // 构造函数的实现

  {  year=0; month=0; day=0; }

  Date::Date(int y,int m,int d)

  { year=y; month=m; day=d; }

  inline void Date::showDate()

{  cout<<year<<"."<<month<<"."<<day<<endl;} 

注意:1、构造函数可以有任意类型的参数,但没有返回类型

2、 类中没有定义构造函数,系统将自动生成一个默认形式的构造函数

二、构造参数的初始化

 方法:


1.使用构造函数的函数体进行初始化

2.使用构造函数的初始化列表进行初始化


格式:

  

funname(参数列表):初始化列表

  {  函数体,可以是空函数体  }

  初始化列表的形式:

  成员名1(形参名1),成员名2(形参名2),成员名n(形参名n)

注:数据成员必须初始化三种条件

1、常量

2、引用类型

3、没有无参构造函数的类的对象

三、point 类

格式:

数据成员

         点的坐标x,y

成员函数

         无参构造函数 

               有参构造函数

         set函数(设置x,y的值)

 get_X函数

             get_Y函数

             display  函数

举例:

#include <iostream>

#include <cmath>

using namespace std;

class Point{

         intx,y;

public:

       Point(){}

         Point(int a,int b)

         {x=a,y=b;         }

         voidsetx(int xx)       {        xx=x;         }

         voidsety(int yy)      {        yy=y;        }

         intgetx() {        returnx;  }

         intgety() {        returny; }

};

#include <iostream>

#include <cmath>

using namespace std;

class Point{

         intx,y;

public:

         Point(int a=0,int b=0)

         {x=a,y=b;         }

         voidsetx(int x)         {        this->x=x;         }

         voidsety(int y)        {        this->y=y;         }

         intgetx() {        returnx;  }

         intgety() {        returny; }

};

四、析构函数

      类的数据成员中包含指针变量是从堆上进行存储空间分配的话,需要在析构函数中进行存储空间的回收。

注:可以不定义析构函数。

#include <bits/stdc++.h>

using namespace std;

class Student{

public:

         Student(intn, string a_name, char s)   {

                   num=n;  

                   name=a_name;

                   sex=s;       cout<<"Constructorcalled."<<endl;

         }

         ~Student()

         {        cout<<"Destructorcalled."<<endl;       }//析构函数

         voiddisplay()

         {cout<<name<<endl;cout<<num<<endl;cout<<sex<<endl;        }

private:

         intnum;         stringname;   char sex;

};


 五、this指针

(1)在类的非静态成员函数中返回类对象本身或对象的引用的时候,直接使用

return *this,返回本对象的地址时,returnthis。

(2)当参数与成员变量名相同时,如this->x = x,不能写成x = x。

(3)避免对同一对象进行赋值操作,判断两个对象是否相同时,使用this指针。

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值