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. SQL SERVER分区视图

    借助SQL SERVER分区视图,可以对SQL中的表进行集中管理,下文将以实例的方式为您详解SQL SERVER分区视图,希望对您学习SQL数据库能有所帮助. SQL SERVER分区视图给我们提供了 ...

  2. mvn profile 深层次目录打参数核心配置

    <build> <resources> <resource> <directory>src/main/resources</directory&g ...

  3. ThInkPHP中的常量

    除了常规变量的输出外,模板引擎还支持系统变量和系统常量.以及系统特殊变量的输出.它们的输出不需要事先赋值给某个模板变量.系统变量的输出必须以$Think.打头,并且仍然可以支持使用函数.常用的系统变量 ...

  4. linux常用命令详解 (二)文件处理命令

    ◆ 文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat.ln: 系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些 ...

  5. javascript 里找元素操作元素

      javascript  一.找到元素. var d = document.getElementById("") var d = document.getElementsByNa ...

  6. 用JQuery实现表格隔行变色和突出显示当前行

    用JQuery实现表格隔行变色和突出显示当前行 上源码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "htt ...

  7. 初学DIV+CSS要记住的

    初学DIV+CSS?有六个问题需要您关注一下!作为DIV+CSS初学者,如果在动手写代码之前对网页整体结构由一个清晰认识的话,写起来会事半功倍!但是,写的过程中总是有这样那样的问题,使得我们不得不停下 ...

  8. new关键字和newInstance()方法的区别

    转载:http://blog.csdn.net/iloveyin/article/details/7965183 1.类的加载方式不同    在执行Class.forName("a.clas ...

  9. java多线程的实现的两种方法

    通过继承Thread类实现 多线程- public class Hello{ public static void main(String args[]){ MyThread tr1 = new My ...

  10. console.log几个小知识

    <script> //百度的console console.log('一张网页,要经历怎样的过程,才能抵达用户面前?\n一位新人,要经历怎样的成长,才能站在技术之巅?\n探寻这里的秘密:\ ...