2、掌握C++基本语法

1、C语言的结构体没有函数,C++有,默认为public,类的默认为private

2、析构函数时无参的,this指针底层的运行机制 P40有详细讲解

  this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址

  一个类所有的对象调用的成员函数都是同一代码段。那么成员函数又是怎么识别属于同一对象的数据成员呢?原来,在对象调用pt.output(10,10)时,成员函数除了接受2个实 参外,还接受到了一个对象s的地址。这个地址被一个隐含的形参this指针所获取,它等同于执行this=&pt。所有对数据成员的访问都隐含地被加上前缀this->。例如:x=0;等价于 this->x=0。VS中通常我们使用this来列出该类中的所有成员,提高编写速度,减少错误

3、显式调用父类的带参数的构造函数,fish():animal(20,20)

4、C++对象的创建写法和C#、java不同的,没有new

5、子类对象创建的内存模型  P49

6、重载:只在同一个类发生,两个条件。

  覆盖:子类 virtual,参数什么都一样,这里有个迟绑定技术

  隐藏:a.没有virtual的覆盖,b.有virtual,但是参数列表不同

  含有纯虚函数的类叫做抽象类,类没有abstract声明,居然和Java不同

7、引用的应用,c没有引用这个概念

  a.函数形参--避免实参占较大内存时发生值复制

  b.完成一些特殊的作用

8宏的3种用途

  a.避免重复定义 P60

  b.#define R 10--增加程序的可阅读性

  c.#define max(a,b) ((a>b)?a:b) 预处理时max()会被((a>b)?a:b)代替,和内联函数有神似,相比函数调用,减少了系统什么堆栈之类清理的开销,估计Linux的              CURRENT宏也是这样定义的。

9、通常把类的定义和函数原型的声明放在头文件.h中,把具体实现方向源文件.cpp中,一个类放在一个.h和.cpp中,这个思想和java比较像

10、包含头文件用<>和""的区别,#include<iostream.h>是从系统目录下开始搜索不搜索当前目录,#include "animal.h"从当前目录搜索,加快搜索速度,不知道情况下用"",因为在当前目录搜索不到,会到系统目录搜索

11、C++函数调用最好先声明

12、C++定义要分号,GCC编译器最接近标准C++

13、算法分为数值算法和非数值算法,数值算法比较成熟,一般都实现了。非数值算法,我认为是业务逻辑那些。

14、break--结束整个循环,continue只结束本次循环。

15、编译从上而下,内置函数(inline function),适用规模小且被频繁调用的函数

16、函数模板,可以和函数重载对比一下

17、用register声明寄存器变量---频繁使用的  如12000次循环

18、内部函数static和外部函数extern

19、程序编译后已经将变量转换为变量的地址,对变量值的存取都是通过地址进行的

20、数组访问,用下标法和指针法。指针法占内存小,运行速度快。

21、typedef的作用。。。。sizeof作用,查看一个对象所占的空间大小

22、C++编译系统用一段空间来存放各个对象共同的函数代码段,在调用各对象的函数时,都去调用这个共用的函数代码。一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。函数代码是存储在对象空间之外的。

23、注意虚函数和成员函数的区别。虚函数有虚函数表,而成员函数没有。调用的时候只是从程序的某一个地方跳到另外一个地方去执行

原文地址:https://www.cnblogs.com/chester/p/2010705.html