1,枚举类型 —— 下标自0开始

enum 枚举类型名 { 常数表 }

2,C++ 的异常处理机制实际上是一种运行时通知机制

3,delete p;只是删除指针p指向内存区,并不是删除指针p,所以p还是可以用的。删除空指针所指向内存是可以的。

4,为了避免内存泄露,在删除一个指针后应该将其其值赋为0。

5,常量指针是指针指向的内存区域地址不能改变,但是该内存地址里保存的值是可以改变的,比如int a; int * const p = &a;

指向常量的指针表示指针指向的对象是不能被修改的,但是该指针可以被修改,即该指针可以指向另一块目标内存地址。比如const int a = 0; const int *p = &a; 如果A是一个类,也可以为const A* p = new A; —— 可以理解成只读指针

而指向常量的常指针表示指针本身不能被修改,其指向的内存地址内容也不能被修改。比如const int a = 0; const int * const p = &a;

6,既然引用实现了指针的功能,而且使用起来更加方便,为什么还要指针呢?

这是因为指针可以为空,但是引用不能为空,指针可以被赋值,但是引用只可以被初始化,不可以被赋为另一个对象的别名。如果你想使用一个变量来记录不同对象的地址,那么就必须使用指针,另外指针也可以是多重的。指针可以指向堆中空间,引用不能指向堆中空间。但指针和引用可以一同使用,另外要注意引用的生命周期。

对于引用而言,如果引用是一个临时变量,那么这个临时变量的生存周期不会小于这个引用的生存期。指针不具备这个特性。

为了避免内存泄露,我们不能按值的方式返回一个堆中对象,而必须按地址或者别名的方式返回一个别名或者内存地址,这样就不会调用复制构造函数来创建一个该对象的副本了,而是直接将该对象的别名或者地址返回。

为了避免指针混淆,我们必须对堆中的内存在哪个函数中创建,就在哪个函数中释放。

7,在一条语句中自加运算符的执行顺序为从右向左,且不同的编译器入栈的顺序不同。

比如说VC6.0中其入栈是要求该语句的表达式执行完后。因此a=1;cout<<a++<<++a;则分别输出的是2,2;

++的结合性为右结合,所以++++i合法,而i++++不合法,可以改为(i++)++;

8,如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,那么在派生类中访问共同基类中的成员函数时会产生二义性,解决方法是需要指定类的作用域,或者将共同的基类设置为虚基类,因为虚基类不会产生二义性。

一个虚函数被说明为虚函数,在派生类中覆盖了该函数,那么该函数也是个虚函数,不过你也可以在它前面添加关键字virtual,这样更容易理解。

继承所体现出的不同子类相同函数有不同的表现,但是这个并不能体现类的多态性,因为类的多态性要求可以用基类指针来操作子类。

9,如果a表示的是数组指针,delete[] a,表示删除堆中的指针数组a,而delete a,表示删除堆中的指针数组第一个指针。

10,由于malloc和free函数产生于C语言时代,因此不可用在c++的对象中,因为对象的产生要调用构造函数。

11,函数名是指向函数的第一条指令的常量指针,这与数组名是指向数组中第一个元素的常量指针一样。

函数指针应该将函数名和前面的指针给括起来。

使用函数指针可以减小一些重复的代码,因为函数指针名可以看作是函数名的代号,我们可以通过它来直接调用,函数指针经常会在条件或者判断语句里出现,以便于用户选择调用不同名字但又返回值类型和参数类型完全相同的函数。函数指针可以作为函数的参数传入。

12,char字符串的比较只能用循环的方式进行(或者使用库函数strcmp函数),而string的比较可以直接用等号。

不可以直接对char型字符串数组进行赋值操作,而只能使用strcpy函数,或者对数组每个元素一个个的赋值。而string类的字符串可以直接用等号进行赋值。另外,string类中还有一个专门的赋值函数assign,这个函数可指定赋值字符串起点和长度。

查看char型字符串的长度可以用strlen函数。string中用size成员函数实现该功能。在char中,strncat可以实现部分字符串的合并。在string中是append函数。同理,char中用strncpy来实现字符串的替换,在string中使用replace来实现该功能,且replace的重载函数中可以兼容char型字符串数组。

char型字符串的拷贝用memmove, string中使用copy成员函数。

string中用insert来插入,其string类是从下标为1开始数的。erase完成字符串的删除。

char型字符串的查找使用函数strchr。而string类中使用find函数实现。该函数有很多变形的函数,比如find_first_not_of函数,表示找到第一个不相同的字符。同理还有find_first_of,find_last_of等函数。反向查找使用rfind()函数,但是它的返回值位置还是从头开始的,并不是从末尾开始的。

string中用compare实现比较,它的c_str()返回一个指向char型的const指针。

13,包含对象是将另一个类的对象作为该类的成员,而嵌套类是在该类中定义了一种新类型,这个类型只能在该类中使用。由于嵌套类作为一种自定义的数据类型被封装在另一个类中,因此可避免与其它类的名称冲突。


参考:http://www.cnblogs.com/tornadomeet

C++ 补课 (三)的更多相关文章

  1. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列

    1.引言 消息是互联网信息的一种表现形式,是人利用计算机进行信息传递的有效载体,比如即时通讯网坛友最熟悉的即时通讯消息就是其具体的表现形式之一. 消息从发送者到接收者的典型传递方式有两种: 1)一种我 ...

  2. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  3. IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路

    1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...

  4. 从游击队到正规军(三):基于Go的马蜂窝旅游网分布式IM系统技术实践

    本文由马蜂窝技术团队电商交易基础平台研发工程师"Anti Walker"原创分享. 一.引言 即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个 ...

  5. 快速理解高性能HTTP服务端的负载均衡技术原理(转)

    1.前言 在一个典型的高并发.大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案.HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此 ...

  6. 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结

    本文原作者“ manong”,原创发表于segmentfault,原文链接:segmentfault.com/a/1190000006158186 1.引言   MySQL作为开源技术的代表作之一,是 ...

  7. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

    1.引言   达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利 ...

  8. 阿里技术分享:阿里自研金融级数据库OceanBase的艰辛成长之路

    本文原始内容由作者“阳振坤”整理发布于OceanBase技术公众号. 1.引言 OceanBase 是蚂蚁金服自研的分布式数据库,在其 9 年的发展历程里,从艰难上线到找不到业务场景濒临解散,最后在双 ...

  9. 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践

    本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io.应作者要求,如需转载,请联系作者获得授权. 一.引言 ...

  10. 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

    本文来自知乎官方技术团队的“知乎技术专栏”,感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经形成了一整套完整自动 ...

随机推荐

  1. [ Git ] [ GitHub ] 如何刪除自己github上面的Repository-轉載

    http://www.winwu.cc/2013/03/githubrepository.html

  2. C#派生类中使用基类protected成员的方法

    我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被prot ...

  3. 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树

    经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...

  4. ZOJ-3261 Connections in Galaxy War 并查集 离线操作

    题目链接:https://cn.vjudge.net/problem/ZOJ-3261 题意 有n个星星,之间有m条边 现一边询问与x星连通的最大星的编号,一边拆开一些边 思路 一开始是真不会,甚至想 ...

  5. Hexo 与 Git 集成

    git初始化项目 登录Github,初始化GitHub Pages项目.即是添加一个Git Project. 点击New repository创建一个新的Project.需要填写选项如下:    -  ...

  6. laravel中soapServer支持wsdl的例子

    最近在对接客户的CRM系统,获取令牌时,要用DES方式加密解密,由于之前没有搞错这种加密方式,经过请教了"百度"和"谷歌"两个老师后,结合了多篇文档内容后,终于 ...

  7. python 爬虫简介

    初识Python爬虫 互联网 简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现 ...

  8. 今日SGU 5.29

    sgu 299 题意:给你n个线段,然后问你能不能选出其中三个组成一个三角形,数字很大 收获:另一个大整数模板 那么考虑下为什么如果连续三个不可以的话,一定是不存在呢? 连续上个不合法的话,一定是 a ...

  9. Java Web学习总结(20)——基于ZooKeeper的分布式session实现

    1.   认识ZooKeeper ZooKeeper-- "动物园管理员".动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始 ...

  10. 坑爹的RockSaw和坑爹的windows7

    坑爹的RockSaw和坑爹的windows7 http://chen4w.iteye.com/blog/1153433