面向对象的程序设计C++小知识点

 

1、类是将不同类型的数据和对这些数据的操作封装在一起的集合体。
2、的类型,也仅仅是一种数据类型
3、类是对象的抽象,对象是类的实例。
4、类中的数据成员的类型可以是任意的。包括整型、浮点型、字符型、数组、指针和引用。
5、在类体中不允许对所定义的数据成员进行初始化。因为类的定义只是在创建一个类型,而不是在说明变量。
6、在类的内部定义的成员函数叫内联函数,在类的外部定义的成员函数叫外联函数。
7、实现类外部定义的好处是:使整个类的代码合理布局,容易维护,而缺点是增加了成员函数调用的开销。
8、在类的外部定义内联函数(关键字:inline)是可以使代码合理分配,又避免调用的开销。
9、类的对象对类中成员的访问受访问权限控制,但成员函数对数据成员或成员函数并没有任何限制。
10、在大多数情况下,类的保护成员具有私有成员的性质。
11、访问权限修饰符(访问权限控制符)在类体中出现的先后顺序无关,允许多次出现。
12、类作为一个用户自定义的数据类型,系统不会给类分配存储空间,只有定义了类的对象才会给对象分配相应的内存。创建对象时,使用类作为样板,为对象分配内存。每个对象占据内存不同区域,各自的数据不同,但是操作数据的函数代码是共用的,所以建立对象是指分配用于保存数据的内存,操作函数为各个对象共享。
13、由于封装性,对象只能访问公有成员。如果类中的成员没有指明权限,默认为私有。
14、构造函数的功能,是在创建对象时,给对象分配内存空间并使用给定的值来初始化对象。                                                15、析构函数的功能是在对象删除前用来做一些释放和清理工作的。
16、构造函数的特点:                    (1)为类的成员函数;(2)不能有返回值;    (3)可以重载(4)程序一般不直接调用构造函数,在创建对象时会自动调用构造函数,以完成对象的初始化工作。
17、析构函数的特点:(1)一个类中只能有一个析构函数;(2)不能有返回值;(3)不能重载;(4)在对象消失时,析构函数会被自动调用。
18、构造函数和析构函数均不能定义在类的私有部分。                            19、拷贝构造函数是一种特殊的构造函数,它的功能是对象在初始化时用一个已知对象的数据成员的值复制给正在创建的另一个同类的对象对应的数据成员。其函数不能有返回值;只能有一个参数;每个类必须有一个拷贝构造函数。
20、静态数据成员不属于某个对象的成员,而是属于所有对象的。
21、静态数据成员在定义或说明时前面加关键字:static。
22、静态数据成员属于整个类,必须在类体外进行初始化,但前面不再加static,也不加访问控制标识符。格式:数据类型 类名::静态数据成员名=值; 静态数据成员不随对象的创建而分配空间,也不随对象被释放而撤销。当静态数据成员被分配了内存空间后,只有在程序结束后才能被释放。

23、友元函数可以访问类中的所有成员,包括私有成员,显然它破坏了类的封装性;但它本身又不是类的成员函数。

24、友元函数在调用上与普通函数相同。

25、定义好静态数据成员后,引用它的格式也要注意与引用一般成员的区别:

类名::静态成员名

而一般成员的引用格式为:对象名.成员名

在同类的成员函数中引用,可省略 类名::

26、静态成员函数可以直接引用静态数据成员,但不能直接引用非静态数据成员,必须通过对象来引用类中的非静态数据成员。

27、友元类:友元关系不可逆(B类是A类的友元类不等于A类是B类的友元类)、无传递性(B类是A类的友元类,C类是B类的友元类,不等于说C类是A类的友元类)。

28、友元函数没有this指针,因为友元不是类的成员。只有成员函数才有 this 指针。

29、对于常数据成员,在任何函数中都不能对它赋值,也不能更新。因此必须对它进行初始化,而且只能通过采用构造函数的成员初始化列表来实现

30、常成员函数的const是放在函数头的后面,如:int get_hour()const。

31、公有继承:派生类的成员函数可以访问基类中的公有成员和保护成员,不可访问其私有成员。派生类的对象只可访问基类中的公有成员,不能访问其它成员。

32、私有继承:派生类的成员函数可以访问基类中的公有成员和保护成员,不可访问其私有成员。派生类的对象不能访问它们。

33、保护继承:派生类的成员函数可以访问基类中的公有成员和保护成员,不可访问其私有成员。派生类的对象不能访问它们。可以向下继承。

34、缺省继承方式默认为private。

35、虽然基类的私有成员被派生类吸收,但不可访问。

36、构造函数与析构函数都不能继承。

37、派生类的构造函数必须通过调用基类的构造函数来初始化基类的数据成员。一般格式如下:

派生类构造函数名(参数表):基类构造函数名(参数表){ ……}

38、派生类构造函数的任务应该包括3个部分:

(1) 对基类数据成员初始化;

(2) 对子对象数据成员初始化;

(3) 对派生类数据成员初始化。

39、派生类构造函数的调用顺序:

(1)基类的构造函数;

(2)子对象的构造函数;

(3)派生类构造函数;

40、派生类的析构函数调用的顺序与构造函数正好相反。

41、在多继承的派生类的构造函数中,先执行基类的构造函数;多个基类的构造函数的执行顺序取决于定义派生类时规定的先后顺序。

42、C++支持2种多态性:

(1)静态多态性:编译时的多态性,其具体实现主要有函数重载和运算符重载;

(2)动态多态性:运行时的多态性,其具体实现主要有虚函数。

43、运算符重载函数的两种形式:重载为类成员函数,重载为友元函数。

44、C++用函数重载和运算符重载来实现编译时的多态性;用继承和虚函数来实现运行时的多态性。

45、静态联编:联编工作在编译连接阶段完成。

46、动态联编:联编工作在程序运行阶段完成。

47、虚函数是动态联编的基础。虚函数是特殊的函数重载。关键字只能对基类中的非静态的保护成员或公有成员函数进行声明。重载时必须满足与原虚函数相同参数等要求!

48、构造函数不能声明为虚函数,析构函数可以!内联函数也不能声明为虚函数!

49、带有纯虚函数的类为抽象类。纯虚函数:例:virtual void area()=0;

virtual  函数原型=0;

50、(1)封装、继承、多态是面向对象程序设计的三大特征。

(2)所谓多态,即一个名字,多种语义;或相同的界面,多种实现。

(3)函数重载和虚函数是实现多态的主要方式。两者的区别在于:函数重载强调的函数名相同,函数参数不同,属于静态联编;

     虚函数则强调单界面多实现版本的方法,即函数名、返回类型、函数参数的类型、个数完全相同,但函数体可以完全不同,属于动态联编。

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值