本帖最后由 allen927 于 2015-11-2 11:20 编辑
同样的课程、老师、就业,更好的学习环境,更低的学习成本!
十年磨一剑【基哥笔记】半天搞定C++
资源下载 资源名称 | DOC笔记 | 视频代码 | 十年磨一剑-【基哥笔记】-半天搞定c++ | | |
1 c++C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言[1] 。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。最新正式标准C++11于2011年8月12日公布。 C语言是C++的基础,C++和C语言在很多方面是兼容的。 C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。 C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。 C++对C的“增强”,表现在六个方面: (1) 类型检查更为严格。 (2) 增加了面向对象的机制。 (3) 增加了泛型编程的机制(Template)。 (4) 增加了异常处理。 (5) 增加了运算符重载。 (6) 增加了标准模板库(STL)。
2 c++的语法关键字
基本数据类型 c: char short int long float double c++: char short int long float double bool
占位符
运算符
3 你好世界
:: 作用域运算符
4 基本数据类型
5 &字符
6常量constconst:常量 特点:一旦被定义就不能为修改 java final
7字符串
8 for循环
9 goto语句java里面有没有goto语句,没有java里面有goto 保留关键字
goto:到那里去?目的地 目的地 : 冒号 goto 目的地; 分号
10 try catch捕获异常 java try{} catch(Execption e){} finally{}
c++ try{} catch(){ }
throw 抛出异常 抛什么就捕获什么
11 new、delete关键字new:申请一块内存空间 delete:释放一块内存空间
12 vector
13 list集合
14 map集合key value 键值对
15 访问修饰符public的定义:所有范围都能访问; protected的定义:类自身和派生类能访问(派生类对象对其基类对象部分中的protected成员的访问); private的定义:类自身能访问;
16 类class 类是用来描述一类相同的事务的属性和行为。
17 类对象
18 构造方法
19 类的继承简单地说下C++类的3种继承方式,分别是 public继承 protected继承 private继承 继承就是为了修改父类访问权限,可以理解为一种安全的保护 using namespace std; class Parent{ private: int a; protected: int b; public: Parent(){ cout<<"Parent的构造方法被调用"<<endl; a = 1; b = 2; c = 3; }; int c; }; class Child : privateParent{ //能够访问的属性 b c public: Child(){ cout<<"Child的构造方法被调用"<<endl; }; void accessB(){ cout<<b<<endl; }; }; class Sunzi: public Child{ //能够访问的属性 无法访问Parent里面的任何属性 public: Sunzi(){ cout<<"Sunzi的构造方法被调用"<<endl; };
};
20 静态static 通过类名可以直接调用 类里面:静态的常量和方法
21 名称空间namespace
22 内联函数inline 说明这个函数是内联的,在编译过程中内联函数会直接被源代码替换,提高执行效率如果类中的某个函数会被调用很多次或者放在循环中,那么建议将这个函数声明为内联,可以提高程序的运行效率 记住,调用函数的开销是很大的,所谓的空间开销是指调用函数前,先要将原来的函数保存在寄存器(占用寄存器空间)里面,并在调用结束后恢复。调用函数时,还要复制实参(占用内存空间)。如果被调用函数一旦调用频繁,就会花费很多空间。如果你有一段“短小而频繁调用的函数”,内联是个不错的选择。
23 虚函数虚函数是C++的精华,也是java多态的前身。virtual 虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数! 纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数! 虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。 24 输入
25 初始化列表 初始化列表就是在实例化对象的时候,可以显示的调用父类的构造方法,传递参数给父类,也可以对本身的属性进行赋值。
26 多继承如果B1和B2有相同的属性,这样如果调用是会出现错误的,如果有就只能选择虚继承。 必须要显示的指定访问作用域
27 虚继承虚拟继承,和普通继承是C++的两种继承方式。 例如B1、B2 继承A 而C多重继承B1、B2 如果普通继承则C包含两份A的拷贝,分别来自于B1、B2 而虚拟继承则只包含一份A的拷贝
虚基类是指:class SubClass : virtual public BaseClass 中以virtual声明的基类!!由于C++支持多重继承,所以对于一个派生类中有几个直接父类,而几个直接父类中有几个可能分别继承自某一个基类(就是父类的父类),这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),为解决此问题,需要使用虚基类,即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了 典型的需要用虚基类的情况如下: A / \ B C \ / D
如果是虚继承,在子类实例化的时候是不会调用父类的构造方法,必须显示的调用。 #include <iostream>
using namespace std;
class A { public: A(int a = 0):mA(a) {} int mA; };
class B1 : virtual publicA { public: B1(int a = 0, int b = 0) : A(b), mB1(a) {} int mB1; };
class B2 : virtualpublic A { public: B2(int a = 0, int b = 0) : A(b), mB2(a) {} int mB2; };
class C : public B1, public B2 { public: C(int x, int a, int b, int c, int d) : A(b),B1(a,b), B2(c, d), mC(x) {} void Print() { cout << "B1::mA = " << B1::mA<< endl; cout << "B2::mA = " << B2::mA << endl; cout << "mA = " << mA << endl; cout << "mB1 = " << mB1 << endl; cout << "mB2 = " << mB2 << endl; cout << "mC = " << mC << endl; } int mC; };
int main() {
Cobj(10, 20, 30, 40, 50); obj.Print(); system("pause"); return 0; }
希望大家积极转发、分享,让更多的人轻松学习!
相关链接:
长沙中心--黑马双元课堂JAVA入学辅导班1期火爆开班啦!!! 长沙黑马程序员学习激情无限“吊炸天”
|