C++基础 (二)有关于类

本文详细介绍了C++中的构造函数与析构函数的概念、作用及使用方式。包括构造函数的特点、如何初始化成员变量、函数重载以及析构函数的作用和特性。此外还讨论了堆空间内存管理的方法。

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

2016.8.3 C++ 第二天

    // private:数据安全,保护属性,外界(本类之外)不能访问到

    // public:提供接口,类与外部之间的一个桥接

    // 属性:成员变量  private

    // 行为:成员函数  public


构造函数

作用:对成员变量进行初始化

特征:1⃣️必须为public

           2⃣️函数名和类名相同

           3⃣️没有返回值

  4⃣️可以有参数

构造函数的调用:当创建对象时根据参数个数自动调用相应的构造函数(不需要object.形式进行调用)

如果程序中没有任何一个构造函数,编译器提供一个默认构造函数(空的)。 

如果程序中有任何一个构造函数,编译器不再提供默认构造函数

一般写两个,一个没有参数,一个带有全部成员的参数


组合类:要求一一对应


函数的重载

在同一个作用域中,函数名相同,参数列表不同,这些函数构成函数重载。参数列表不同分为两种情况:参数个数不同;参数类型不同。

编译器根据参数个数、类型来调用相应的函数

  

初始化列表:用来对成员变量初始化

1⃣️执行效率高

2⃣️成员变量是const、引用、组合、继承  时,必须使用初始化列表赋值


组合类

一个类A 的成员变量是另一个类的对象,A成为组合类

作用:代码重用

注意:构造函数匹配

析构函数

析构函数的作用:当对象生命周期结束时,回收对象所占空间(堆空间)。如:~Circle() 

1⃣️必须为public

2⃣️没有返回值

3⃣️不能带参数

4⃣️不能被重载(唯一性)

当对象的生命周期结束,自动调用析构函数

  // 堆空间   C: malloc free NULL  C++: new delete NULL

    int *p=new int (100);  // 在堆空间分配int大小的空间,存储值为100

    cout<<*p<<endl;

    char *p1=new char ('a');  // 在堆空间分配char大小的空间,存储值为'a'

    cout<<*p1<<endl;

    

    delete p;

    delete p1;

    p = NULL;

    p1 =NULL;

    

    //在堆空间开辟10int大小的空间

    int *p2=new int [10];//  类似于*p2[10]?

    for (int i=0; i<10; i++) {

        p2[i]=i;

        cout<<p2[i]<<endl;

    }

    delete [] p2;// 删除10p2空间

    */

// 构造函数释放堆空间

class test1{

private:

    int *p;  // 当成员变量是指针,空间一定被分配在堆上

public:

    test1(){

        p = new int [5];

        for (int i=0; i<5; i++) {

            p[i]=i;

            std::cout<<p[i]<<std::endl;

        }

    }

    ~test1(){

        if (p!=NULL) {

            delete []p;

            p=NULL;

        }

        cout<<"NULL"<<std::endl;

        

    }

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值