1、在实际开发中,引用类型变量值用于函数的参数中。它不会另外开辟空间(提高了程序效率),他相当于变量的别名,代表的就是当前这个变量的地址空间。(引用的底层用的是指针。因此从底层的角度讲,其实它的效率是没有提高的)。
2、不要定义类似下列的函数:
void fun(int parameter){};
void fun(int &parameter){};
这两个函数符合重载的概念。编译也不会报错,但是当出现如下调用时,程序运行就会出错
int m = 10;
fun(m);
这样调用时,程序不知道你调用的是哪一个函数。
3、默认参数函数,定义如下:
void fun(int a = 1);
在函数声明的时候写,默认参数必须写在所有参数的最后。默认参数的函数要少用。在写程序的时候,有时可能会在调用的时候忘记写参数,这时函数就会使用默认参数,这样程序运行的结果可能就不是预期的结果。
4、类是保存在代码段的,可以用它来创建对象。创建的对象也没有成员函数,成员函数也是存放在代码段内的。
5、析构函数不能重载,因为析构函数没有参数,因此无法重载。
6、问:为什么C不能重载?C++可以重载?
    答:编译到最后所有的函数都没有函数名。只有一个地址供程序调用。C语言在编译的过程中就根据函数名(不管参数)来确定地址。而C++在编译的时候会将参数和函数名一起使用来确定地址。
7、指向成员函数的指针,即函数指针。其定义方式与C语言的函数指针定义不同。定义方式是:成员函数返回类型 (类名::*指针变量名)(参数列表)。成员函数int stu::show(int x, int y){},为其定义成员函数指针应如下:
int (stu::*p)(int x, int y) = &stu::show;
stu stu1;
(stu1.*p)(1, 2);//通过对象使用成员函数指针调用成员函数。其调用方式是(对象名.*指针变量名称)(实参)
通过函数指针去调用成员函数也必须使用对象去调用。
8、常成员变量,在成员变量前面用关键字const修饰。它只能并且必须通过构造函数的初始化表为其初始化,而且必须进行初始化,不初始化会报错,以后都不能再为其赋值。相当于只读变量。所有的构造函数都必须通过初始化表对对常成员变量赋值。只读变量应该用大写。
9、常成员函数。函数在形参列表前用const修饰。其在声明和定义都必须加上const。在常成员函数中,(1)、一定不能改变成员变量的值。(2)、不能在常成员函数中调用普通函数,但是可以调用其它常成员函数, 但是普通成员函数可以调用常成员函数。(3)、不能修改对象。除此之外,其它的与普通成员函数一样。
10、常对象。即对象里面的值不能再被更改。它的定义是在定义时加上const修饰。它只能调用常成员函数。(因为常对象的成员变量是不能被更改的,而普通成员函数可能会修改它的值,因此规定常对象只能访问常成员函数)。定义常对象的类的构造函数必须把所有成员变量都初始化。虽然在创建常对象时,不为常对象的成员变量初始化编译器不会报错,但是这样是没有意义的。因为后面就不能再为其赋值了。常对象主要作用就是避免修改不能修改的成员变量。
11、对象的动态创建。使用new创建的对象存放在堆中。但是在堆中分配空间有可能会失败,因此必须对结果进行判断。也可以使用malloc类函数进行创建对象,但是不会调用构造函数,但是这种方法在开发中不要使用。
12、对象赋值与对象复制。赋值:有空间,只是把值拷贝过去。如:stu1 = stu2;复制:原本没用空间,而完全“克隆”出另一个对象出来。其语法为:stu::stu1 = stu2;  
stu stu1(stu2);编译器在处理时,会将第一种情况处理成后面的写法。两种写法等价。都要调用复制构造函数。第一种方法调用了赋值构造函数。对象的赋值与赋值是用于对象的参数和对象返回值。函数传参是属于复制。根据入栈的原理,函数在调用的时候才会为形式参数分配空间。如下:return p;当执行这句时,系统会为返回值找一块内存空间,然后将p的值放进这个内存空间中,然后销毁p的空间。函数调用结束,程序接收到返回值以后,这块内存空间也会被销毁。
13、复制构造函数。当你没有写赋值构造函数时,编译器会自动加上赋值构造函数。这与构造函数和析构函数相同。编译器根据参数来确认是否是复制构造函数。
14、默认构造函数有五个。其中包括无参数默认构造函数,复制构造函数
15、静态成员变量和静态成员函数。静态成员变量与普通成员变量的区别:
(1)、程序开始运行就会创建静态成员变量。程序结束时才销毁。创建对象时,不会在对象的内存块中出现静态成员变量。
(2)、所有的对象使用的静态成员变量都是同一个。它是所有对象共享的变量。
(3)、不随着对象创建而创建,销毁而销毁。
(4)、静态成员变量也叫类变量,可以通过  类名::静态变量名  来引用它。当然也可以用访问普通成员变量方式去访问它。
(5)、静态成员变量虽然是共享的,但是却不能在类中赋值,它也必须在类外赋值。建议放在main函数所在的文件中进行赋值,但是不要写在main函数中。(避免重复导入错误)。
(6)、静态成员方法和静态成员变量的访问方式相同。
(7)、静态成员函数只是在声明时要用static声明,在实现时不需要用static修饰。
(8)、静态成员函数中,不能使用this指针。能不能使用this来访问静态成员变量。静态成员函数中若要访问摸个对象的成员,则必须把这个对象以参数的方式传入静态成员函数。

C++学习笔录1的更多相关文章

  1. ADO.NET Entity Framework学习笔录(一)

    今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇. 我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS ...

  2. 性能测试LR学习笔录 -2

    LoadRunner基本测试流程: 制定性能测试计划(部分)  -> 创建测试脚本 -> 编译.运行测试脚本 -> 创建场景 - > 运行.监控场景.收集数据  -> 生 ...

  3. SVG学习笔录(一)

    SVG可缩放矢量图形(Scalable Vector Graphics)这项技术,现在越来越让大家熟知,在h5的移动端应用使用也越来越广泛了, 下面让我分享给大家svg学习的经验. HTML体系中,最 ...

  4. DDD学习笔录——提炼问题域之知识提炼与协作的基本原则

    1.通过通用语言达成共识 通用语言,已经强调过好多遍了,在DDD再怎么重视都不为过,后面可能还会讲. 知识提炼的输出以及共识的构建就是常见的通用语言(UL). 当与业务相关人员和主题专家进行建模时,每 ...

  5. DDD学习笔录——简介领域驱动设计的实践与原则

    DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键. 1.专注于核心领域 DDD强调的是在核心子域付出最多努力的需要.核心子域是你的产品会成功还是会失败的差异化 ...

  6. C++学习笔录4

    1.容器=数据结构+算法.相当于是为复杂的数据设计一种专门用于存放该数据的东西.用于开发中传递复杂的数据. 2.模版函数只能写在头文件中.不能单独做声明. 3.STL容器类分为三类: (1).顺序容器 ...

  7. C++学习笔录3

    1.隐藏:存在于派生类和基类中.只要成员名字相同就叫做隐藏.参数和函数名都相同时,是一种特殊的隐藏,叫做重写,重写只出现在函数中.若需要访问基类中被隐藏的成员,必须访问这种方法:“对象名:类名::隐藏 ...

  8. C++学习笔录2

    1.如果一个类要成为基类,那么它的成员变量声明成受保护的变量,既用关键字protected修饰. 2.处理共同继承产生的二义性:采用虚继承方式,当出现两个相同的成员时,编译器会自动删除其中一个.其方法 ...

  9. cocos2d学习笔录1

    CCDirector的主要作用: 1.访问和改变场景: 2.访问cocos2d-x的配置细节 3.访问视图(OPENGL,UIVIEW,UIWINDOW): 4.暂停,恢复和结束游戏: 5.在UIKi ...

随机推荐

  1. 7-05. 魔法优惠券(25) (数学 ZJU_PAT)

    题目链接:http://www.patest.cn/contests/ds/7-05 在火星上有个魔法商店,提供魔法优惠券.每一个优惠劵上印有一个整数面值K,表示若你在购买某商品时使用这张优惠劵.能够 ...

  2. 数据结构:最小生成树--Prim算法

    最小生成树:Prim算法 最小生成树 给定一无向带权图.顶点数是n,要使图连通仅仅需n-1条边.若这n-1条边的权值和最小,则称有这n个顶点和n-1条边构成了图的最小生成树(minimum-cost ...

  3. magento新闻邮件发送一直处于“正在发送”状态问题解决

    今天在弄magento新闻邮件发送时候发现,单个邮件发送全然没有问题,可是新闻邮件订阅死活都不成功.国内国外的帖子都翻了一遍没实用,最后还是得靠自己了.于是開始慢慢找问题 首先想到是不是crontab ...

  4. cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測

    玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸, ...

  5. C# 设计模式 - 单例模式 演示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. jmx使用应该注意的基本规范

    1.标准MBean 名称必需是在要监控的类名后面加上“MBean ”. 2.监控的类和MBean 接口必需在同一包下,也可以理解为注册的接口名字必须以MBean结尾,接口实现类比接口名字少了MBean ...

  7. PropertyGrid--为复杂属性提供编辑功能

    零.引言 PropertyGrid用来显示某一对象的属性,但是并不是所有的属性都能编辑,基本数据类型(int, double等)和.Net一些封装的类型(Size,Color等)可以编辑,但是对于自己 ...

  8. 使用C#创建winform窗体,修改debugwen文件夹下exe应用程序的默认图标

    在做一个接口程序是遇到的问题,记录一下: 在解决方案资源管理器上,右击项目名称——属性——点击图标和清单右边的的按纽——去Debug文件夹中找到自己的图标,打开.然后保存.

  9. HTML4如何让一个DIV居中对齐?float输入日志标题

    float:left,right clear:both 如何让一个DIV居中对齐? 第一步:设置外层的DIV的text-align:center; 第二步:设置里层的DIV的margin:auto 以 ...

  10. PHP框架学习之Laravel基本功能

    Laravel5的功能不是一般的多(路由,中间件,blade模版...),单是一个路由功能就让哥很蛋疼,虽说路由使用起来变得很灵活,但真他妹的有点变态了.这里是我照着Laravel5官方文档研究的成果 ...