A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© allen927 中级黑马   /  2015-10-29 22:52  /  33594 人查看  /  929 人回复  /   5 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 allen927 于 2015-11-2 11:20 编辑

同样的课程、老师、就业,更好的学习环境,更低的学习成本!
内地学员,选择长沙校区,靠谱!!!
报名热线:0731-85833115
  QQ  : 2355535415

十年磨一剑【基哥笔记】轻松学android

十年磨一剑【基哥笔记】半天搞定C++

资源下载
资源名称
DOC笔记
视频代码
十年磨一剑-【基哥笔记】-半天搞定c++

1 c++
C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言[1] 。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。最新正式标准C++112011812日公布。
C语言是C++的基础,C++C语言在很多方面是兼容的。
C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。
C++C的“增强”,表现在六个方面:
(1) 类型检查更为严格。
(2) 增加了面向对象的机制。
(3) 增加了泛型编程的机制(Template)。
(4) 增加了异常处理。
(5) 增加了运算符重载。
(6) 增加了标准模板库(STL)。

2 c++的语法
关键字
1.png
2.png
基本数据类型
c:
char
short int long
float double
c++:
char
short int long
float double
bool

占位符
3.png
运算符
4.png

5.png


3 你好世界
6.png


7.png

:: 作用域运算符

4 基本数据类型
9.png

5 &字符
10.png

6常量const
const:常量   特点:一旦被定义就不能为修改   java final  
11.png


7字符串

12.png

8 for循环

13.png

9 goto语句
java里面有没有goto语句,没有java里面有goto  保留关键字

goto:到那里去?目的地   
目的地 : 冒号
goto 目的地;  分号
14.png

10 try  catch
捕获异常
java
try{}
catch(Execption e){}
finally{}

c++
try{}
catch(){
}

throw 抛出异常  
抛什么就捕获什么
15.png


11 newdelete关键字
new:申请一块内存空间  
delete:释放一块内存空间
16.png

12 vector
17.png

13 list集合
18.png

14 map集合
key value 键值对
19.png

15 访问修饰符
public的定义:所有范围都能访问;
protected的定义:类自身和派生类能访问(派生类对象对其基类对象部分中的protected成员的访问);
private的定义:类自身能访问;

16
class
类是用来描述一类相同的事务的属性和行为。
20.png

17 类对象
21.png

18 构造方法
22.png

19 类的继承
简单地说下C++类的3种继承方式,分别是
public继承
protected继承
private继承
继承就是为了修改父类访问权限,可以理解为一种安全的保护
23.png
24.png
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
通过类名可以直接调用
类里面:静态的常量和方法
25.png

21 名称空间namespace
26.png

22 内联函数
inline 说明这个函数是内联的,在编译过程中内联函数会直接被源代码替换,提高执行效率如果类中的某个函数会被调用很多次或者放在循环中,那么建议将这个函数声明为内联,可以提高程序的运行效率
记住,调用函数的开销是很大的,所谓的空间开销是指调用函数前,先要将原来的函数保存在寄存器(占用寄存器空间)里面,并在调用结束后恢复。调用函数时,还要复制实参(占用内存空间)。如果被调用函数一旦调用频繁,就会花费很多空间。如果你有一段“短小而频繁调用的函数”,内联是个不错的选择。

27.png

23 虚函数
虚函数是C++的精华,也是java多态的前身。virtual
虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!
纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!
虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。
28.png
24 输入
29.png
25 初始化列表
初始化列表就是在实例化对象的时候,可以显示的调用父类的构造方法,传递参数给父类,也可以对本身的属性进行赋值。
30.png

26 多继承
如果B1B2有相同的属性,这样如果调用是会出现错误的,如果有就只能选择虚继承。
必须要显示的指定访问作用域
31.png

27 虚继承
虚拟继承,和普通继承是C++的两种继承方式。  
例如B1B2  继承A   C多重继承B1B2
如果普通继承则C包含两份A的拷贝,分别来自于B1B2  
而虚拟继承则只包含一份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期火爆开班啦!!!
长沙黑马程序员学习激情无限“吊炸天”
黑马程序员长沙校区生活圈,60秒搞定吃住学
http://bbs.itheima.com/thread-243108-1-1.html

点评

基哥给力! 虽然我不能半天学会.  发表于 2015-10-29 23:47

929 个回复

倒序浏览
mark收藏了,等学完java重新学学已经放下三年的C++。多技能才能工作多选择
回复 使用道具 举报
真的不错撒。。。
回复 使用道具 举报
长沙人得福利啊,大家抓紧哈
回复 使用道具 举报
签到,签到
回复 使用道具 举报
来了看看,转转。
回复 使用道具 举报
签到来也
回复 使用道具 举报
学习学习!
回复 使用道具 举报
学习学习!!!!!!
回复 使用道具 举报
签到来了
回复 使用道具 举报
收了慢慢看
回复 使用道具 举报
好多帖子
回复 使用道具 举报
签到,签到
回复 使用道具 举报
草草草丛哦
回复 使用道具 举报
哎,有一天过去了。
回复 使用道具 举报
十年磨一剑,好
回复 使用道具 举报
可惜啊,来北京了
回复 使用道具 举报
我要去北京啊啊啊啊
回复 使用道具 举报
签到来了签到来了签到来了~!
回复 使用道具 举报
签到来了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马