C++的一些知识点比较零碎,下面清单的形式做一些记录与归纳,以供参考。

1、赋值操作符重载(深复制):

  (1)由于目标对象可能引用了以前的一些数据,所以应该先delete这些数据;

  (2)注意到对象可能对自己赋值,所以应该加上下面语句(another表示另一个对象),再进行(1)的操作:

    

  (3)函数返回一个指向调用对象的引用;

(4)赋值操作符只能通过成员函数重载。

2、静态类成员函数:

 (1)静态类成员函数在类的声明中要加static关键字,而在定义中则不用;

 (2)静态类成员函数没用this指针;

(3)如果静态类成员函数是在公有部分中声明,则可以使用类名和域解析操作符来调用它。

 (4)静态成员函数只能调用类的静态数据成员,而类的静态数据成员不能在构造函数中初始化,需独立初始化。

3、构造函数中new的使用:

 (1)如果在构造函数中使用了new来初始化指针成员,则应该在析构函数中使用delete;

 (2)new和delete需对应,new对应delete,new[]对应delete[];

 (3)如果有多个构造函数,则必须使用相同的方式调用new,要么都是new,要么都是new[],因为析构函数只有一个,因此所有的构造函数都应该和它兼容。

4、有关函数返回对象:

 (1)返回const对象的引用:

    <1>返回对象会调用复制构造函数,而返回对象的调用则不会,因此效率会有所提高;

    <2>引用指向的对象应该在函数执行时存在。

 (2)返回非const对象的引用,一般有两种情况:

    <1>重载赋值操作符,使其能够连续赋值;

    <2>重载与cout一起使用的<<操作符,使其能够串接输出,返回形式为: ostream & 。

 (3)返回非const对象:

    假如返回的对象是函数中的局部变量,则不能返回引用,而应返回对象,因为函数执行完局部变量会被销毁,引用将会失效,而返回对象则会调用复制构造函数,生成临时对象。

5、指针与对象小结:

  (1)常规声明方法:

        MyVector *p;

  (2)可以将指针初始化为指向已有的对象:

       MyVector *p = & array[0];

  (3)使用new并通过调用类的构造函数来初始化指针,这将创建一个新的对象:
      MyVector *p = new MyVector(0,0,0);

6、析构函数的调用:

  (1)如果对象是动态变量,那么当函数执行完定义该对象的程序块时,将调用其析构函数;

  (2)如果对象是静态变量,则在程序结束时会调用其析构函数;

  (3)如果对象是通过new创建的,只当显示使用delete删除对象时才会调用析构函数。

7、成员初始化列表:
  构造函数可用成员列表为方法对成员数据进行初始化。例如:

  

  (1)这种格式只能运用于构造函数中;

  (2)必须使用这种方法来初始化非静态const数据成员;

  (3)必须使用这种方法来初始化引用数据成员。

8、重载操作符:使用成员函数还是非成员函数?

  对于大部分操作符来说,两种方式都可以实现操作符的重载, 下面以重载一个虚数类的加法为例:

  (1)成员函数版本(只有一个参数);

  

  

  (2)非成员函数(友元函数)版本(有两个参数,函数定义不用加类名限定):
  

  

  一般来说,除了部分操作符只能使用成员函数进行重载之外,使用这两种格式没有太大的区别。当然,重载是只能二者选一,不然会被认为是重复定义而报错。

  

    //To be continued.

C++ 零碎知识点的更多相关文章

  1. webdriver零碎知识点

    #零碎知识点,用于记录平时遇到的比较杂的知识点 driver.current_url 获取当前url phantomjs 实现无浏览器界面自动化测试(driver = webdriver.Phanto ...

  2. Android零碎知识点 1

    Android零碎知识点 1   Android在2.3版本上开始支持KeyEvent.KEYCODE_PAGE_DOWN以及KeyEvent.KEYCODE_PAGE_UP的操作.   Androi ...

  3. 大数据学习day19-----spark02-------0 零碎知识点(分区,分区和分区器的区别) 1. RDD的使用(RDD的概念,特点,创建rdd的方式以及常见rdd的算子) 2.Spark中的一些重要概念

    0. 零碎概念 (1) 这个有点疑惑,有可能是错误的. (2) 此处就算地址写错了也不会报错,因为此操作只是读取数据的操作(元数据),表示从此地址读取数据但并没有进行读取数据的操作 (3)分区(有时间 ...

  4. iOS开发零碎知识点

    记录一些常用和不常用的iOS知识点,防止遗忘丢失.(来源为收集自己项目中用到的或者整理看到博客中的知识点),如有错误,欢迎大家批评指正:如有好的知识点,也欢迎大家联系我,添加上去.谢谢! 一.调用代码 ...

  5. 11、网页制作Dreamweaver(补充:JS零碎知识点&&正则表达式)

    JS知识点 回车符/r和换行符/n的区别:/r 相当于enter,是段落与段落之间的区别, /n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...

  6. salesforce零基础学习(八十八)项目中的零碎知识点小总结(二)

    通过做项目以及群里面的一些大神的聊天,总结一下关于项目中的两个知识点,以后当做参考. 一. 在custom setting中配置集成接口信息后刷sandbox的问题 我们做项目时,经常会遇见和其他平台 ...

  7. 整理OD一些快捷键和零碎知识点

    第一次记录:2019.9.15 完成了近期基本知识点的记录 第二次记录:2019.9.16 更新VB和的Delphi的汇编代码特点 介绍几个快捷键: Alt+B 断点编辑器,空格键可切换断点状态 ct ...

  8. salesforce零基础学习(一百一十二)项目中的零碎知识点小总结(四)

    本篇参考: https://trailblazer.salesforce.com/issues_view?id=a1p4V0000003znDQAQ https://salesforce.stacke ...

  9. python零碎知识点一

    dir(object),列出对象所有可以用的的方法(参数可以为任意对象,例如class,func等) >>>dir('str') ['__add__', '__class__', ' ...

随机推荐

  1. BigDecimal 类型数据的一些应用

    1.比较大小 可以通过BigDecimal的compareTo方法来进行比较.返回的结果是int类型,-1表示小于,0是等于,1是大于. 例如: if(a.compareTo(b) == -1){ a ...

  2. 怎样用命令行编译C#程序

    1. 把程序拷贝至记事本 2.另存为*cs格式 3.找到VS2015提供的命令提示 4.要把命令行指向程序所在的目录(可以有个小软件) 如果在其他的盘符,先敲D:,然后再cd 5.输入csc hell ...

  3. emacs最简单入门,只要10分钟

    macs最简单入门,只要10分钟  windwiny @2013    无聊的时候又看到鼓吹emacs的文章,以前也有几次想尝试,结果都是玩不到10分钟就退出删除了. 这次硬着头皮,打开几篇文章都看完 ...

  4. Error: [$rootScope:inprog] $digest already in progress

    我在 做一个 服务器分配成功以后需要更新 整个页面,我的思路是 更新成功以后,就手动的 触发一下 搜索按钮,但是在触发后,虽然成功刷新了页面,但是出现了一个 错误提示, Error: [$rootSc ...

  5. window.onscroll页面滚动条滚动事件

    用途一:"返回顶部": window.onscroll = function(){ var t = document.documentElement.scrollTop || do ...

  6. RHEL-界面中文乱码问题

    一.虚拟机里的rhel更换为中文简体后,中文字符变为小方块 二.解决方法: 安装中文支持的软件包 fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859- ...

  7. 界面调试工具reveal

    iOS界面调试工具 Reveal 转自 http://chuansong.me/n/1308113 原创2015-04-17 唐巧iOS开发 Reveal是一个iOS程序界面调试工具.使用Reveal ...

  8. JSP的原理

    一.什么是JSP JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大特点在于,写JSP就行html, ...

  9. [转]Sql按年份.月份.每天统计数量

    1.每年 select year(ordertime) 年, sum(Total) 合计 from 表 group by year(ordertime) 2.每月 select year(ordert ...

  10. PHP7的安装

    PHP7和HHVM比较PHP7的在真实场景的性能确实已经和HHVM相当, 在一些场景甚至超过了HHVM.HHVM的运维复杂, 是多线程模型, 这就代表着如果一个线程导致crash了, 那么整个服务就挂 ...