-
面向对象程序设计将数据与对数据的操作放在一起,**作为一个相互依存,不可分割的整体来处理。**数据再程序中可以看作是对象,类的成员。一般我们在写代码时,先定义声明一个变量(数据),之后,我们会给它赋值,或者把它的首地址给某个指针,这些都是对数据的操作,而这两步是紧密相连,所以说是一个整体。
-
**在类中声明转换函数时不能指定参数。**在我目前所学的知识中,所了解到的c++语言转换方式有以下两种:(1)(数据类型)(表达式)(2)数据类型(表达式)。再这里可以看出,是对表达式的操作,而不是参数,参数是原来的数据的。
-
**在派生类中重新定义虚函数时必须在参数类型方面与基类保持一致。**首先我们的知道为什么引入虚函数?(1)在继承中,如果基类和派生类中定义了同名的成员函数,当基类函数指针指向公有派生类的对象后,可以使用虚函数来实现通过基类指针找到相应的派生类成员函数。(2)在声明指向基类函数对象的指针,当它指向公有派生类对象时,只能访问派生类中从基类继承来的成员,而不能直接访问公有派生类中的其他成员。所以我们知道虚函数是解决基类和派生类同名的成员函数的问题,所以当然虚函数是必须要与派生类的参数类型保持一致。
-
c++类中类的继承与派生的说法:(1)基类的protected成员在公有派生类的成员函数中可以直接使用;(2)基类的protected成员在私有派生类的成员函数中可以直接使用;(3)基类的protected成员在保护派生类的成员函数中可以直接使用;(4)基类的private(私有成员)在所有的派生类继承方式中都是不可以访问的。
-
程序分析
#include
using namespace std;
class base{
int x;
public:
base(int a){x=a;cout<<"base "<<x<<endl;}
base(base&t){x=t.x;cout<<"base copy "<<x<<endl;}
};
class derived:public base{
int y;
public:
derived(int a,int b):base(b)
{y=a;cout<<"derived "<<y<<endl;}
derived(derived&t):base(t){y=t.y;cout<<"derived "<<y<<endl;}
};
void main()
{
base*pb=new derived(52,54);
base a(*pb);
delete pb;
}
这里的52给了derived中的a,54给了derived中的b;因为derived是派生类所以先执行它的基类base。之前的b就会传给base中的a,输出base 54。之后再执行derived,输出derived 52。最后执行基类base的base&t,输出base copy 54。这里的base&t是赋的x,就是base的a的值。 -
函数的多态性。
什么是多态性?书本写的是不同的对象接收到相同的消息时产生完全不同的行为的现象称为多态性。编译时通过重载函数实现,运行时通过虚函数实现。按照我的理解(可能说的不太到位)就是程序中有基类和多个派生类,而虚函数再基类中声明,然后再派生类中定义不同的操作,在主函数中用基类定义的指针去对每个派生类新建内存,然后指向虚函数,这样就可以执行不同派生类虚函数的功能了。
c++期末复习总结
最新推荐文章于 2024-05-16 07:52:09 发布