一、初始化列表

  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生成的空间的,这时候就需要自定义析构函数进行销毁,还有文件的读写、数据的保存等。

C++ -- 类与成员的更多相关文章

  1. C++点滴----关于类常成员函数

    关于C++中,类的常成员函数 声明样式为:   返回类型 <类标识符::>函数名称(参数表) const 一些说明: 1.const是函数声明的一部分,在函数的实现部分也需要加上const ...

  2. c++函数模板作为类的成员函数,编译报错LNK2019的解决方法

    为了使某个类的成员函数能对不同的参数进行相同的处理,需要用到函数模板,即template<typename T> void Function(). 编译时报错LNK2019 解决方法: 1 ...

  3. fielderror里的fieldName代表的是jsp里的fieldName还是Action类的成员变量?(待解答)

    1.值栈的Action对象中会有一个fielderror属性,代表着字段错误. fielderror是Map<String,List<String>>类型 例如下面的值栈里可看 ...

  4. [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)

    [.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

  5. 深入理解PHP内核(十四)类的成员变量及方法

    原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...

  6. [javaSE] 反射-获取类的成员属性和构造方法

    成员属性和构造方法皆为对象,通过Class对象的方法可以得到 package com.tsh.reflect; import java.lang.reflect.Constructor; import ...

  7. [转载]能不能同时用static和const修饰类的成员函数?

    题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量).请问:能不能同时用static和con ...

  8. 回调函数中使用MFC类的成员或对话框控件的简单方法

    在MFC的很多程序中,常常需要在回调函数中调用MFC类的类成员变量.类成员函数,亦或者对话框控件的句柄.由于回调函数是基于C编程的Windows SDK的技术,而类成员又有this指针客观条件限制.. ...

  9. Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

    上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象 ...

  10. (转)c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考

    昨天去面试一家公司,面试题中有一个题,自己没弄清楚,先记录如下: class D { public: void printA() { cout<<"printA"< ...

随机推荐

  1. linux是什么与如何学习(三)

     1.1Linux是什么 Linux是在计算机上面运作的,所以说是一组软件. 1.2 Linux是什么?操作系统还是应用程序? 计算机主机是由一套硬件所组成的,为了有效的控制这些硬件资源,于是就有了操 ...

  2. python 并发编程 多线程 信号量

    一 信号量 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行,信号量同一时间可以有5个任务拿到锁去执行 如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群 ...

  3. 交换机安全学习笔记 第四章 VLAN

      Trunk 口  思科称为:native VLAN  华为称为:PVID   说白了就是Trunk端口本身所属的VLAN,因为,Trunk端口要"透传"多个VLAN的流量,其本 ...

  4. 使用注解@CrossOrigin解决跨域问题

    转一个大兄弟写的贴子,总结得很好,很全面 https://www.cnblogs.com/mmzs/p/9167743.html 作者: 淼淼之森

  5. []转帖]linux 上修改了nginx.conf 怎么重新加载配置文件生效

    linux 上修改了nginx.conf 怎么重新加载配置文件生效 https://www.cnblogs.com/zhuyeshen/ 步骤如下先利用/usr/local/nginx/sbin/ng ...

  6. JVM 堆内存设置原理(转)

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  7. P1550打井

    这是USACO2008年的一道最小生成树题,感谢dzj老师那天教的图论. 要引渠让每一个村庄都可以接到水,然后从某一个村庄到另一个村庄修剪水道要花费w元,并且还要打井(至少一个)(而输入数据也包括了在 ...

  8. windows环境下搭建mysql主从

    参考 windows环境下mysql主从配置 1. 环境 参数 说明 主库所在的操作系统 win7 主库的版本 mysql-5.6.46-winx64 主库的ip地址 127.0.0.1 主库的端口 ...

  9. document与Object的关系

    window与Objet 1. window.__proto__ === Window.prototype 2. window.__proto__.__proto__ === 窗口属性(WindowP ...

  10. SCUT - 492 - 鬼符「搦手的鬼畜生」 - 简单数学

    https://scut.online/p/492 求[1,a]范围内的a模m的逆元的数量. 一开始用扩展欧几里得算法草了一发,WA了,当时不太清楚模非质数的周期,看来扩展欧几里得算法的笔记才知道要加 ...