自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 多重继承引起的二义性问题和虚基类

由于基类A和基类B都有数据成员a和成员函数display,编译系统无法判别要访问的是哪一个基类的成员,因此,程序编译出错。class B:virtual public A//声明类B是类A的公用派生类,A是B的虚基类。class C:virtual public A//声明类C是类A的公用派生类,A是C的虚基类。B(int n):A(n){}//类B构造函数,在初始化表中对虚基类初始化。例:类A和类B中都有成员函数display和数据成员a,类C是类A和类B的直接派生类。class A//声明基类A。

2024-05-27 21:41:50 678

原创 多重继承。

例:声明一个教室(Teacher)类和一个学生(Student)类,用多重继承的方式声明一个在职研究生(Graduate)派生类(在职教师攻读研究生)。教师类中包阔数据成员name(姓名),age(年龄),title(职称)。学生类中包括数据成员name1(姓名),sex(性别),score(成绩)。在定义派生类对象时给出初始化数据,然后输出这些数据。一、声明多重继承的方法。

2024-05-26 22:38:29 280

原创 多层派生时的构造函数和派生类的析构函数

先执行派生类自己的析构函数,在调用子对象的析构函数,最后再调用基类进行清理。在执行派生类的析构函数时,系统会自动调用基类的析构函数和子对象的析构函数对基类和子对象进行清理。析构函数的作用是在对象撤销之前,进行必要的清理工作,当对象被删除时,系统会自动调用析构函数。,也需要通过派生类的析构函数取调用基类的析构函数。2、再初始化Student1的数据成员age.1、先初始化基类的数据成员num和name.例:多级派生情况下派生类的构造函数。派生类是不能继承基类的析构函数。析构函数没有类型也没有参数。

2024-05-26 20:01:42 571

原创 多级派生时的访问属性和派生类的构造函数和析构函数

这时s1就是类对象中的内嵌对象,称为子对象,即对象中的对象。例:包含子对象的派生类的构造函数。

2024-05-25 21:32:44 272 1

原创 派生类成员的访问属性,及私有继承公用继承和保护类继承

前言:对于public(公用)、private(私有)、protected(被保护)继承方式,在我认为熟知后面我所列的表格中的关系即可。基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。基类的公有成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。基类的公有成员和保护成员在派生类中为私有属性,私有成员仍未基类私有。基类访问属性为公有派生类跟随继承方式,基类访问为。私有不管继承方式是什么在派生类中都不可访问。被保护除了继承方式为公有保持不变为被保护的。

2024-05-23 20:54:24 744 1

原创 继承与派生,派生的声明方式和构成

注意:在c++中可重用性是通过“继承”这一机制,来实现的。继承是C++中的一个重要组成部分!

2024-05-23 20:36:19 361 1

原创 不同类型数据间的转换

2、在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法。其返回值的类型是由函数名中指定的类型名来确定的。例:在已声明一个Comple类可以在Complex类中这样定义类型转换函数。其作用是将double型的参数r转换称Complex类的对象。类型转换函数只能作为成员函数,因为转换的主体是本类的对象。类型转换函数的作用是将一个类的对象转换成另一个类型的数据。4、转换类型构造函数:(转换类型构造函数。3、在该类的作用域内用以下形式进行转换。能作为友元函数或普通函数。

2024-05-22 11:30:00 499

原创 重载流插入运算符和流提取运算符

C++的流插入运算符“<<”;流提取运算符“>>”是在编译系统的类库中提供的的。C++在编译系统都在其类库中提供输入流类istream和输出流类ostream。cin和cout分别是istream和ostream类的对象。

2024-05-17 20:26:35 306

原创 重载双目运算符与重载单目运算符

双目运算符有两个操作数(参加运算的数据),通常在运算符的左右两侧。例如:a+b,a>b等。单目运算符只有一个操作数(参与运算的数据),如!a,-b,&c,*p,--i等。

2024-05-17 18:30:00 323

原创 运算符重载函数作为类成员函数和友元函数

例:将运算符"+"重载为适用于复数加法,重载函数不作为成员函数,而放在类外,作为Complex类的友元函数。2、运算符重载的函数不是类成员函数(可以是一个普通函数),在类中把它声明为友元函数。1、把运算符重载的函数作为类成员函数。3、友元运算符重载函数。

2024-05-16 19:55:03 107

原创 运算符重载和对运算符重载的方法和重载运算符的规则

运算符重载的方法是定义一个重载运算符的函数,使指定的运算符不仅能实现原有的功能,而且能实现在函数中指定的新的功能。根据自己的需要对C++已提供的运算符进行重载,赋予它们新的含义,使之一名多用。象一起使用,其参数至少应有一个是类对象(或类对象的引用).对于类对象的运算符一般必须重载,但有两个例外,其中要两个复数相加需要用到复数相加函数。例:定义一个专门的函数来实现复数相加。下面可以用重载运算符的方法来定义。运算符"="和“&”不必用户重载。运算符重载实质上是函数的重载。对象定义的自定义类型对。

2024-05-16 19:35:52 740

原创 类模板的使用

template<class 虚拟类型参数>函数类型 类模板名<虚拟类型参数>::成员函数名(函数形参表){......}x:y;

2024-05-13 21:27:53 358

原创 允许访问私有数据的朋友

一般情况下,两个类是互不相干的,display函数是Time类中的成员函数,它本来只可以用来输出Time类对象中的数据成员hour,minute,sec。如果声明了类B是类A的友元类,不等于类A是类B的友元类,类A中的成员函数不能访问类B中的私有数据。friend函数不仅可以是一般函数(非成员函数),而且可以是另一个类中的成员函数。如果类B是类A的友元类,类C是类B的友元类,不等于类C是类A的友元类。在类A的定义体中用以下语句声明类B为其友元类。1、友元的关系是单向的而不是双向的。

2024-05-09 20:44:13 347 1

原创 不同对象实现数据共享

以关键字static开头class Boxpublic:private://把height定义为静态的数据成员int width;int length;希望同类的各对象中的数据成员的值都是一样的,就可以把它定义为静态数据成员,这样它就可以为各对象所共有,而不只属于某个对象成员,所有对象都可以引用它。静态数据成员只在内存中占一份空间。一个类中可以由一个或多个静态数据成员,所有对象都共享这些静态数据成员,都可以引用它。公用的静态数据成员可以初始化,但只能在类外进行初始化。

2024-05-08 23:17:49 371 1

原创 对象的动态建立和释放,对象的赋值和复制

在执行new运算时,如果内存量不足,无法开辟所需的内存空间,大多数C++编译系统都使new返回一个0指针值(NULL)。3、函数的返回值是类的对象。当在需要用到对象时才建立对象,在不需要用该对象时就撤销它,释放它所占内存空间以供别的数据使用,以提高内存空间的利用率。当函数参数为类的对象,在调用函数时要将实参对象完整地传递给形参,也就是需要建立一个实参的拷贝,调用复制函数。1、如果在一个函数中定义了一个对象,只有在该函数结束时,该对象才释放。1、对象的赋值只是对其中数据成员的赋值,而不对成员函数赋值。

2024-04-17 22:56:40 437

原创 公用数据的保护

定义:在定义对象时加关键字const,指定对象为常对象。//定义t1是常对象凡希望保证数据成员不被改变的对象,可以声明为常对象类名 const 对象名[(实参表)];const 类名 对象名[(实参表)];两者等价。(说明:如果一个对象被声明为常对象,则通过该对象只能调用它的常函数成员,而不能调用该对象的普通成员函数(除了由系统自动调用的隐式的构造函数和析构函数)。//定义常对象t1//企图调用常对象t1中的普通成员函数,非法为了防止普通成员函数会修改常对象中数据成员的值。

2024-04-13 21:57:58 640

原创 对象数组、对象指针、公用数据的保护

在每一个成员函数中都包含一个特殊指针,这个指针的名字是固定的,称为this指针。它是指向本类对象的指针,它的值是被当前调用的成员函数所在的对象的起始地址。

2024-04-12 22:19:54 559

原创 使用类和对象,构造函数,析构函数的使用

原因:类不是实体,而是一种抽象类型,不占用内存空间,显然无处存放数据。ps:如果一个类中所有的成员都是共用,则可以在定义对象时对成员进行初始化。

2024-04-01 23:30:21 288

原创 类和对象的特性

a、先声明类类型,然后再定义对象//Student是已经声明的类型//或者class 类名 对象名;b、在声明类的同时定义对象public:private:int num;char sex;//定义了两个Student类的对象//在定义Student类的同时,定义了两个Student类的对象public://公用成员函数原型声明private:int num;char sex;//对名为Student的类进行声明。

2024-03-24 00:37:37 932 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除