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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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++的语法
关键字


基本数据类型
c:
char
short int long
float double
c++:
char
short int long
float double
bool

占位符

运算符





3 你好世界





:: 作用域运算符

4 基本数据类型


5 &字符


6常量const
const:常量   特点:一旦被定义就不能为修改   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 newdelete关键字
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 多继承
如果B1B2有相同的属性,这样如果调用是会出现错误的,如果有就只能选择虚继承。
必须要显示的指定访问作用域


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 个回复

正序浏览
收藏啦。。。。。。。。。。。。
回复 使用道具 举报
class Text06 {         public static void main(String[] args) {                 Person p = new Person();                 p.name = "张三";                 p.age = 17;                 p.gender = "男";                 System.out.println(p.name + " " + p.age + " " + p.gender);                 p.studay();                 p.sleep();         } } class Person {         String name;         int age;         String gender;         public void studay(){                 System.out.println("学习");         }         public void sleep(){                 System.out.println("睡觉");         } }
回复 使用道具 举报
好好学习,天天向上!!
回复 使用道具 举报
感觉饿并不能半天学会=-=!
回复 使用道具 举报
非常给力,来赚个黑马币
回复 使用道具 举报
zhongxing6a 来自手机 中级黑马 2016-1-23 15:32:01
923#
非常感谢分享
回复 使用道具 举报
收藏了,等学完java重新学学已经放下三年的C++。多技能才能工作多选择
回复 使用道具 举报
学习了~~~~
回复 使用道具 举报
x_starry 来自手机 中级黑马 2016-1-5 09:36:21
920#
顿时觉得学到了好多东西
回复 使用道具 举报
好东西多分享啊
回复 使用道具 举报
签到咯。。。。。。
回复 使用道具 举报
c的看了,这次看c++的!
回复 使用道具 举报
littp 中级黑马 2015-12-31 00:03:48
916#
签到啦~~签到啦~。。。
回复 使用道具 举报
签到签到~
回复 使用道具 举报
我是来签到 的 !!!
回复 使用道具 举报
我是来签到 的 呀
回复 使用道具 举报
我来签到 大家好
回复 使用道具 举报
更好的学习环境,更低的学习成本!
回复 使用道具 举报
签到签到
回复 使用道具 举报
Jay來簽到啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马