目录
学前提问
一、
C#不支持多重继承
java(高效,体积小,可移植性)和C#(开发周期短,对网络和数据访问功能)更加高级,开发容易。 运行效果不如底层的C和C++(C/C++稳定,灵活,高效)
二、
C++,运行速度快,功能强大,类库需要手动选择,编译型跨平台
JAVA,运行速度缓慢,需要虚拟机环境,完全跨平台,类库丰富,功能中庸,无法进行底层的高级操作
C#,运行速度中等,需要虚拟机环境,即将跨平台,类库丰富,功能与略比JAVA多,主要是能与操作系统底层交互
C#吸取了JAVA的语法结果,又结合了C++的结构,进行了一些改进,C#不像JAVA那样完全解释执行,C#采用编译的汇编代码进行执行,所以C#的运行效率比JAVA快,但不如C++,C#能与操作系统底层交互,JAVA则不可能,如建立一个半透明的窗口,C#和C++轻而易举,JAVA比登天还难,不过JAVA的最大优点是完全跨平台,这是JAVA程序员唯一的言辞
三、
当然有好处,学好了C++,可以从事服务器、软件、工业控制、游戏等开发,最重要的是比同等级别的Java工资要高
四、
https://www.cnblogs.com/fengff/p/9417440.html
五、
系统软件。比如杀毒,优化,系统驱动。因为这个与操作系统接触紧密,所以要用c++. 不过不少地方是c,c++混用的。
对性能有高度要求。比如google的索引,编译器,脚本语言引擎,大型游戏,网络服务器等等。
一些嵌入式平台,特定的平台智能跑C/C++。
思维导图
一、基础
1.变量和常量
常量取名更方便
2.运算符
在C语言中的动态分配和释放内存的函数是malloc calloc 和 free ,
而在C++中要用 new new[] delete delete[] 来申请动态空间和释放空间。
引用的声明方法:类型标识符 & 引用名 = 目标变量名
二、程序结构
1.函数
值传递:调用时,将实参传给对应形参。由于形参有自己独立的存储空间,有作为函数的局部变量使用,因此在函数中对形参值得任何修改都不会改变实参变量得值。
好处:减少函数得数据依赖,增强函数自身得独立性。
引用传递:是一种特殊变量,它被认为是一个变量的别名。
2.重载:
特征:
1) 相同的范围(在同一个类中)
2) 函数名字相同
3) 参数不同
三、符合数据类型
1.数组:
vector数组是一个能存放任意数据类型(类,结构,普通变量类型等)的动态数组!
2.指针:
务必初始化,防“野指针”
Const指针
不能修改指针对应对象的内容
void指针
C指针可以与其他指针相互转化,c++不允许,必须explicit cast
3.动态内存
特点:
1.C++中通过new关键字进行动态内存申请
2.C++中的动态内存分配是基于类型进行的
3.delete关键字用于内存释放
四、类
1.初始化
创建类时,默认调用构造函数
释放类时,默认调用析构函数
2.基础概念
运算符:
this指针:
用途
1.可检查函数参数是否就是对象自己
2.在运算符operator=重载的成员函数中讲对象自己作为返回值输出。
静态成员:
Const函数
在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:
(1)有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。
(2)除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。