孙鑫VC++讲座笔记-(2)C++ (摘自CSDN)

原创 2006年05月31日 14:43:00
1, c语言中,结构体struct中不能包括函数的,而在C++中struct中可以包括函数。
2,C++中结构体和类可以通用,区别主要表现在访问控制方面:struct中默认是public,而 class中默认的是private。
3,构造函数最重要的作用是创建对象的本身,C++中每个类可以拥有多个构造函数,但必须至少有一个构造函数,当一个类中没有显式提供任何构造函数,C++编辑器自动提供一个默认的不带参数的构造函数,这个默认的构造函数只负责构造对象,不做任何初始化工作。但在一个类中只要自己定义一个构造函数,不管带参不带参,编辑器不再提供默认的不带参的构造函数了。构造函数没有返回值。
4,析构函数当一个对象生命周期结束时候被调用来回收对象占用的内存空间。一个类只需有一个析构函数。析构函数没有返回值也不的带参数。
5,析构函数的作用与构造函数相反,对象超出起作用范围对应的内存空间被系统收回,或被程序用delete删除的时候,对象的析构函数被调用。
6,函数的重载条件:函数的参数类型、个数不同,才能构成函数的重载。重载是发生在同一个类中。
7,类是抽象的,不占用具体物理内存,只有对象是实例化的,是占用具体物理内存的。
8,this指针是隐含指针,指向对象本身(this指针不是指向类的),代表了对象的地址。所有的对象调用的成员函数都是同一代码段,但每个对象都有自己的数据成员。当对象通过调用它的成员函数来访问它的数据成员的时候,成员函数除了接收实参外,还接收了对象的地址,这个地址被一个隐藏的形参this所获取,通过这个this指针可以访问对象的数据成员和成员函数。
9,对象中public属性的成员在外部和子类中都可以被访问;protected属性的成员在外部不能被访问,在子类中是可以访问的;private属性在子类中和外部都不能被访问。
10,类的继承访问特性:(public,protected,private)
 a)基类中private属性成员,子类无论采用那种继承方式都不能访问。
 b)采用public继承,基类中的public,protected属性的成员访问特性在子类中仍然保持一致。
 c)采用protected继承,基类中的public,protected属性成员访问特性在子类中变为protected.
 d)采用provate继承,基类中的public,protected属性成员访问特性在子类中变为provate.
11,子类和基类的构造函数或析构函数调用顺序:
 当调用子类的构造函数时候先调用基类的构造函数(如果没有指明,则调用基类却省那个不带参数的构造函数;如果要指明则在子类构造函数名后加":基类名(参数)")。析构函数则相反,先调用子类析构函数,后调用基类的析构函数。
12,函数的覆盖:
 函数的覆盖是发生在发生父类和子类之间的。(函数的重载是发生在同一个类中)
 当子类中重写了父类的某些成员函数后,子类中的成员函数覆盖了父类的对应同名成员函数。
13,用父类指针访问子类对象成员时候,只能访问子类从父类继承来的那部分。(这时候外部不可以访问父类中保护和私有的部分,子类中不可访问父类私有部分。)
14,多态性:在基类的的成员函数前加virturl变成虚函数,当用子类对象调用该功能的成员函数时候,子类有的就调用子类的,子类没有的就调用基类的。
 当C++编译器在编译的时候,发现被调用的成员函数在基类中定义的是虚函数,这个时候C++就会采用迟绑定技术(late binding),在运行的时候,依据对象的类型来确定调用的哪个函数,子类有调用子类的,子类没有的就调用基类的。
 如果基类中的成员函数不是虚函数,则这时候的绑定是早期绑定,在编译的时候就已经确定该调用哪个函数。
15,纯虚函数:在类中定义时 eg: virtual void f1()=0;
 纯虚函数没有函数体,含有纯虚函数的类叫做抽象类,抽象类不能实例化对象。当子类从抽象类的基类中派生出来时候,如果没有实现基类中的纯虚函数,则子类也是个抽象类,也不能实例化对象。
 纯虚函数被标名为不具体实现的虚成员函数,纯虚函数可以让类只具有操作的名称而不具有具体的操作的内容,让派生类在继承的时候再给出具体的定义。如果派生类没有给出基类的纯虚函数的具体定义的时候,派生类也为一个抽象类,也不能实例化对象。
16,引用:变量的别名。引用需要在定义的时候用一变量或对象初始化自己。引用一旦在定义的时候初始化,就维系在一个特定的变量或对象上。
 引用不占用物理内存(与定义引用的目标共用同一内存)。指针变量需要占用物理内存,用来存储地址。
1, c语言中,结构体struct中不能包括函数的,而在C++中struct中可以包括函数。
2,C++中结构体和类可以通用,区别主要表现在访问控制方面:struct中默认是public,而 class中默认的是private。
3,构造函数最重要的作用是创建对象的本身,C++中每个类可以拥有多个构造函数,但必须至少有一个构造函数,当一个类中没有显式提供任何构造函数,C++编辑器自动提供一个默认的不带参数的构造函数,这个默认的构造函数只负责构造对象,不做任何初始化工作。但在一个类中只要自己定义一个构造函数,不管带参不带参,编辑器不再提供默认的不带参的构造函数了。构造函数没有返回值。
4,析构函数当一个对象生命周期结束时候被调用来回收对象占用的内存空间。一个类只需有一个析构函数。析构函数没有返回值也不的带参数。
5,析构函数的作用与构造函数相反,对象超出起作用范围对应的内存空间被系统收回,或被程序用delete删除的时候,对象的析构函数被调用。
6,函数的重载条件:函数的参数类型、个数不同,才能构成函数的重载。重载是发生在同一个类中。
7,类是抽象的,不占用具体物理内存,只有对象是实例化的,是占用具体物理内存的。
8,this指针是隐含指针,指向对象本身(this指针不是指向类的),代表了对象的地址。所有的对象调用的成员函数都是同一代码段,但每个对象都有自己的数据成员。当对象通过调用它的成员函数来访问它的数据成员的时候,成员函数除了接收实参外,还接收了对象的地址,这个地址被一个隐藏的形参this所获取,通过这个this指针可以访问对象的数据成员和成员函数。
9,对象中public属性的成员在外部和子类中都可以被访问;protected属性的成员在外部不能被访问,在子类中是可以访问的;private属性在子类中和外部都不能被访问。
10,类的继承访问特性:(public,protected,private)
 a)基类中private属性成员,子类无论采用那种继承方式都不能访问。
 b)采用public继承,基类中的public,protected属性的成员访问特性在子类中仍然保持一致。
 c)采用protected继承,基类中的public,protected属性成员访问特性在子类中变为protected.
 d)采用provate继承,基类中的public,protected属性成员访问特性在子类中变为provate.
11,子类和基类的构造函数或析构函数调用顺序:
 当调用子类的构造函数时候先调用基类的构造函数(如果没有指明,则调用基类却省那个不带参数的构造函数;如果要指明则在子类构造函数名后加":基类名(参数)")。析构函数则相反,先调用子类析构函数,后调用基类的析构函数。
12,函数的覆盖:
 函数的覆盖是发生在发生父类和子类之间的。(函数的重载是发生在同一个类中)
 当子类中重写了父类的某些成员函数后,子类中的成员函数覆盖了父类的对应同名成员函数。
13,用父类指针访问子类对象成员时候,只能访问子类从父类继承来的那部分。(这时候外部不可以访问父类中保护和私有的部分,子类中不可访问父类私有部分。)
14,多态性:在基类的的成员函数前加virturl变成虚函数,当用子类对象调用该功能的成员函数时候,子类有的就调用子类的,子类没有的就调用基类的。
 当C++编译器在编译的时候,发现被调用的成员函数在基类中定义的是虚函数,这个时候C++就会采用迟绑定技术(late binding),在运行的时候,依据对象的类型来确定调用的哪个函数,子类有调用子类的,子类没有的就调用基类的。
 如果基类中的成员函数不是虚函数,则这时候的绑定是早期绑定,在编译的时候就已经确定该调用哪个函数。
15,纯虚函数:在类中定义时 eg: virtual void f1()=0;
 纯虚函数没有函数体,含有纯虚函数的类叫做抽象类,抽象类不能实例化对象。当子类从抽象类的基类中派生出来时候,如果没有实现基类中的纯虚函数,则子类也是个抽象类,也不能实例化对象。
 纯虚函数被标名为不具体实现的虚成员函数,纯虚函数可以让类只具有操作的名称而不具有具体的操作的内容,让派生类在继承的时候再给出具体的定义。如果派生类没有给出基类的纯虚函数的具体定义的时候,派生类也为一个抽象类,也不能实例化对象。
16,引用:变量的别名。引用需要在定义的时候用一变量或对象初始化自己。引用一旦在定义的时候初始化,就维系在一个特定的变量或对象上。
 引用不占用物理内存(与定义引用的目标共用同一内存)。指针变量需要占用物理内存,用来存储地址。

相关文章推荐

孙鑫VC++讲座笔记-(1)Windows程序内部运行机制

1,windows程序设计是种事件驱动方式的程序设计,主要基于消息的。当用户需要完成某种功能时,需要调用OS某种支持,然后OS将用户的需要包装成消息,并投入到消息队列中,最后应用程序从消息队列中取走消...

孙鑫VC++讲座笔记-(3)MFC程序框架的剖析

孙鑫VC++讲座笔记-(3)MFC程序框架的剖析 1    寻找WinMain人口:     在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。     路径:MFC...
  • xiao__C
  • xiao__C
  • 2012年03月27日 22:31
  • 518

孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析

孙鑫VC++讲座笔记-(4)MFC消息映射机制的剖析    一,消息映射机制 1,消息响应函数:(例:在CDrawView类响应鼠标左键按下消息)     1)在头文件(DrawV...
  • xiao__C
  • xiao__C
  • 2012年03月27日 22:32
  • 517

孙鑫VC++讲座笔记 LESSON 9

Lesson 9 修改应用程序的外观,工具栏、状态栏编程 第一部分 改变应用程序的外观一、 问题:要修改一个应用程序的外观,应该在应用程序创建之前还是在创建之后修改呢?修改一幢楼房应在建成之前,应在窗...
  • uniix
  • uniix
  • 2011年06月14日 19:00
  • 121

孙鑫VC++讲座笔记-(3)MFC程序框架的剖析

孙鑫VC++讲座笔记-(3)MFC程序框架的剖析 1,寻找WinMain人口: 在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。 路径:MFC|SRC|APPMODUL.C...
  • skywn
  • skywn
  • 2012年04月25日 23:46
  • 1119

孙鑫vc++ 第八课 笔记 对话框编程2

对话框编程2 1、逃跑按钮,明白类和对象的关系,并体会什么叫抽象和现实以及可重用性    2、CPropertyPage : CDialog : CWnd : CCmdTarget : CObj...

孙鑫VC++深入详解(7):对话框2

1、属性表单     一个属性表单由一个或多个属性页组成,它的每一个选项卡都是一个属性页,它有效地解决了大量信息无法在一个对话框上显示的问题,并提供了对信息分类和组织管理的功能。...

C对文件的一些操作(孙鑫vc++的阅读笔记)

打开文件 FILE fopen(const char *filename,const char *mode); @filename 要打开的文件 @mode 打开的模式 打开的模式有如下: "r"...

孙鑫VC++视频学习笔记(第六课 菜单的工作原理及编写控件)

消息分类 1.标准消息: 除WM_COMMAND之外,所有以 WM_ 开头的消息。 从CWnd派生的类,都可以接收到这类消息 2.命令消息 来自菜单、加速键或工具栏按钮的消息。这类消息都以W...
  • LXnow
  • LXnow
  • 2011年12月09日 16:01
  • 1181

孙鑫VC++学习笔记(第六讲 ——菜单)

一、(在这章学习开始之前我们需要先做一些小小的工作)         孙鑫的MFC教学视频非常不错,但是由于视频中孙鑫老师采用VC6.0版本,而现在 许多人都转向了使用VS,VS为我们生成了许多不需...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:孙鑫VC++讲座笔记-(2)C++ (摘自CSDN)
举报原因:
原因补充:

(最多只允许输入30个字)