转载c++常忘的知识点
C++的一些知识点比较零碎,下面清单的形式做一些记录与归纳,以供参考。
1、赋值操作符重载(深复制):
(1)由于目标对象可能引用了以前的一些数据,所以应该先delete这些数据;
(2)注意到对象可能对自己赋值,所以应该加上下面语句(another表示另一个对象),再进行(1)的操作:
(3)函数返回一个指向调用对象的引用;
(4)赋值操作符只能通过成员函数重载。
2、静态类成员函数:
(1)静态类成员函数在类的声明中要加static关键字,而在定义中则不用;
(2)静态类成员函数没用this指针;
(3)如果静态类成员函数是在公有部分中声明,则可以使用类名和域解析操作符来调用它。
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)必须使用这种方法来初始化引用数据成员。
//To be continued.
转载c++常忘的知识点的更多相关文章
- 为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token
为什么你学不会递归?告别递归,谈谈我的一些经验 可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...
- 【转载】常见面试题:C#中String和string的区别分析
在很多人面试C#开发工程师的时候,会遇到一个面试题,就是C#中String和string有啥区别.其实针对这个问题C#中String和string没有本质上的区别,两者在程序中都可使用,稍微的一个区别 ...
- 常忘知识点三-使用选择器继承来精简CSS --- @extend
推荐一个很详细的sass教程:https://www.sass.hk/docs/ 在设计网页的时候常常遇到这种情况:一个元素使用的样式与另一个元素完全相同,但又添加了额外的样式.通常会在 HTML 中 ...
- Java面试指北!13个认证授权常见面试题/知识点总结!| JavaGuide
大家好,我是 Guide哥!端午已过,又要开始工作学习啦! 我发现有很多小伙伴对认证授权方面的知识不是特别了解,搞不清 Session 认证.JWT 以及 Cookie 这些概念. 所以,根据我根据日 ...
- [转载]CSP-J/S 第一轮知识点选讲
CSP-J/S 第一轮知识点选讲 转载自这里 感谢原博主的大力整理! 信息学史及基本知识 一.信息学及计算机史 计算机的顶级奖项:图灵奖.冯·诺依曼奖 图灵奖:由ACM(美国计算机协会)设立于1966 ...
- Python常忘的进阶知识(下)
0.目录 1.装饰器 1.1 为每个函数都增加一个功能 1.2 装饰器只是一种模式 1.3 语法糖 1.4 函数需要传递参数,该如何更改装饰器? 1.5 函数需要传递关键字参数,该如何更改装饰器? 2 ...
- c++常考算法知识点汇总
前言:写这篇博客完全是给自己当做笔记用的,考虑到自己的c++基础不是很踏实,只在大一学了一学期,c++的面向对象等更深的知识也一直没去学.就是想当遇到一些比较小的知识,切不值得用一整篇 博客去记述的时 ...
- 关于Linux的常忘命令积累
1.在vim中显示行号 在/etc/vimrc里加上一行 set nu! 2./etc/sysconfig/network-scripts/ifcfg-eth0 (DNS1=192.168.1 ...
- python 常忘代码查询 和autohotkey补括号脚本和一些笔记和面试常见问题
笔试一些注意点: --,23点43 今天做的京东笔试题目: 编程题目一定要先写变量取None的情况.今天就是因为没有写这个边界条件所以程序一直不对.以后要注意!!!!!!!!!!!!!!!!!!!!! ...
随机推荐
- 为什么我不推荐你使用vue-cli创建脚手架?
最近在知乎看到一个问题,原问题如下: "很奇怪,为什么现在能找到自己手动创建vue脚手架的文章非常少,而且大家似乎对webpack4的热情并不高,对于想基于vue2.0+webpack4搭建 ...
- HTML初识
HTML初识 web服务本质 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) so ...
- linux文件访问权限(像rw-r--rw-是什么意思)
Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该目录 可用 ls -l 查看文件 像上图的-rw-r--rw- ...
- Spring源码情操陶冶-任务定时器ConcurrentTaskScheduler
承接前文Spring源码情操陶冶#task:scheduled-tasks解析器,本文在前文的基础上讲解单核心线程线程池的工作原理 应用附例 承接前文的例子,如下 <!--define bean ...
- C#调用Python,报错No module named os
C#调用Python 环境:Windows 8.1,已经安装Python2.7(C:\Python27),配置了环境变量. 已经安装VS2013,VS2017 1.安装IronPython 下载地址h ...
- Android基础字符串String.md
问题抛出 String这个常量在我们代码中会经常被用到,那么我们了解 String stringbuffer StringBudilder三者之间的区别吗 问题解答 String 字符串常量,位于常量 ...
- Jenkins: Can't connect to Docker daemon解决办法
Jenkins安装后首次使用报错: Jenkins: Can't connect to Docker daemon 解决办法: 参照StackOverflow 添加jenkins用户到dockergr ...
- windows汇编环境配置
原文地址 软件下载 需要的软件已经打包,包括dosbox和MASM.如果没有这两个软件可以在下面的地址下载. http://hjwblog.com/game/汇编环境.zip 点击下载 安装dosbo ...
- 0418 jQuery笔记(添加事件、each、prop、$(this))
1.添加点击事件.each.prop.$(this) //全选框的被动操作 //定义一个标志保存最终状态 var flag = false; //为每一个选择框添加点击事件,数组.click() $( ...
- [LeetCode] Out of Boundary Paths 出界的路径
There is an m by n grid with a ball. Given the start coordinate (i,j) of the ball, you can move the ...