zoukankan      html  css  js  c++  java
  • C++ -- 类与成员

    一、初始化列表

      1、是构造函数中一种成员的初始化方式

        例如,class    类名

         {

            类名(参数列表):成员1(成员1),成员2(成员2)...

            {   }

          } 

      2、用此方法可以解决类中的成员与构造函数中参数的重名问题,并且初始化参数列表是在构造函数块之前执行,因此优先级跟高一些

      3、如果初始化的是类,就是需要将类中所需要B的参数传递给类B中。

      例如,class   A

          {

            A(int  a,int  b  ....):B(a,b)...

          }

      4、如果类成员中用const 锁定,绝大多数下,必须使用初始化参数列表给参数赋值。

      5、类成员的执行顺序与在类中定义的顺序有关,而与他初始化的顺序无关。

    二、this 指针

      1、如果形参设置成语类成员的名字一样,就会让编译器无法辨认这两个分别是谁。因此,编译器给对象添加了一个看不到的指针(this),这样就有分别了。

      2、this指针在整个类中都一致存在,不过编译器默认为是隐藏的,不过程序员也可以手动调用

      3、使用this指针的优点:

                 a、区别变量与成员

                 b、返回this指针链式调用

    三、常对象、常函数、常变量

      1、常对象是在创建对象时添加一个const关键字,这个对象就不能修改了,也意味着整个对象不能修改。

      2、常函数就是在成员函数体前加const关键字,常函数就相当于在在this指针前加了const属性,

      3、常对象能调用带有const属性的成员(常函数),而不能调用普通成员。

      4、常函数与‘非’常函数,虽然只相差了一个关键字const,但不会造成冲突,会形成重载。原因在于第二点的解释,const是加给this指针的,不是加给函数的

      5、如果有成员被加了const,但确实要被修改,这时候可以给成员名前加一个mutable关键字

      6、常变量就是,类中成员变量前添加了const关键字,一旦加了此关键字,就不能被修改了,并且只用一种方式才能给他进行初始化,就是在初始化列表中给他赋初值。

    四、静态变量与静态函数

      1、静态变量只能在类外定义,并且在类中声明才能调用。

      2、静态变量如果在类中定义会存储在bss段(这段空间在编译器进行编译最开始就已经固定大小),因此如果多次创建对象时,就不能给创建出静态变量合适的存储空间,这时就会出错。

      全局段: 类型     类名::成员名(就是名字)

      类中声明: static   类型    成员;

      3、静态就是声明在类中的全局变量,在任意位置都可以使用类名::静态成员名进行访问

      4、静态成员函数,就是在函数名前加上static关键字进行修饰,所有对象共享一份静态成员函数

      5、静态成员函数不需要this指针,也就不会访问静态变量。

      

    五、析构函数

      1、析构函数会在对象被销毁时自动调用,在整个函数周期只执行一次,并且只有一个析构函数,他是对象被销毁的最后一个动作。

        class   类名

        {

          ~类名(void){  }

        }

      2、~类名这样就构成了析构函数,一般没有参数,所以直接填void就可以

      3、编译器会默认析构函数,不过如果程序员自定义后,默认析构函数就不会产生

      4、析构函数的调用顺序与销毁函数相反

      5、自定义析构函数的优点:有时候有一些析构函数看不见的资源,例如new/delete等,如果在构造函数时,自定义生成new,那么系统默认的析构函数是不会再析构函数时销毁new生成的空间的,这时候就需要自定义析构函数进行销毁,还有文件的读写、数据的保存等。

  • 相关阅读:
    超参数调试、Batch正则化和程序框架
    优化算法
    深度学习的实用层面
    深层神经网络
    浅层神经网络
    一些实用的JavaScript代码
    mysql练习题1-41
    python 练习题(16-20)
    fiddler抓取https请求
    haproxy监控页面添加及参数简介(转)
  • 原文地址:https://www.cnblogs.com/goul/p/9445510.html
Copyright © 2011-2022 走看看