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

来源:互联网 发布:acg和sia知乎 编辑:程序博客网 时间:2024/06/09 14:35

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;

        

    }

};

1 0
原创粉丝点击