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. Hibernate问题之'hibernate.dialect' not set

    继前文:Hibernate4中buildSessionFactory方法废弃问题.后 继续有问题.本来之前好好的项目,用了这种新的方法后发现问题. 出现  Connection cannot be n ...

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

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

  3. 【dfs or 最短路】【HDU1224】【Free DIY Tour】

    路径只能由小序号到大序号..(起点可以视为最小的序号和最大的序号) 问怎么走 happy值最大.. DFS N=100 且只能小序号到大序号 显然dfs可以过.. 但是存路径的时候sb了.....应该 ...

  4. AndroidUI--SlidingMenu使用例子

    SlidingMenu简介: SlidingMenu的是一种比较新的设置界面或配置界面效果,在主界面左滑或者右滑出现设置界面,能方便的进行各种操作.目前有大量的应用都在使用这一效果.如Evernote ...

  5. apple程序生命周期

    iphone程序的生命周期分析 做iphone开发首先第一件就是得知道iphone程序的生命周期,说白点就是当点击程序图标启动程序开始到退出程序整个使用运行过程中底下的代码都发生了什么,只有理解了这个 ...

  6. Java多线程并发编程之原子变量与非阻塞同步机制

    1.非阻塞算法 非阻塞算法属于并发算法,它们可以安全地派生它们的线程,不通过锁定派生,而是通过低级的原子性的硬件原生形式 -- 例如比较和交换.非阻塞算法的设计与实现极为困难,但是它们能够提供更好的吞 ...

  7. 5.7.2.2 min()和max()方法

    Math对象还包含许多方法,用于辅助完成简单和复杂的数学计算. 其中,min()和max()方法用于确定一组数值中的最小值和最大值.这两个方法都可以接受任意多个数值参数,如下例子: var max = ...

  8. HTTP缓存缓存机制

    http协议无状态,所以缓存设定从两方面考虑.客户端浏览器和服务器端. 浏览器端实现过期机制. 服务器端实现验证机制. 缓存机制. 为了减轻服务器负担,也减少网络传输数量.http1.0定义了Expi ...

  9. Java数据结构习题_算法分析

    2.设T1(N)=O(f(N)),T2(N)=O(f(N)),则: T1(N)-T2(N)=o(f(N))           False,若1位2N,2为N T1(N)/T2(N)=O(1)     ...

  10. Three-Color Flag

    问题陈述: 三色旗的问题最早由E.W.Dijkstra所提出,他所使用的用语为Dutch Nation Flag(Dijkstra为荷兰人),而多数的作者则使用Three-Color Flag来称之. ...