#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
class student{
private:
int num;
int age;
float score;
public:
student(int ,int ,float);
void display();
};
//定义构造函数
student::student(int n,int a,float sc):num(n),age(a),score(sc){}
void student::display(){//定义成员函数
cout<<num<<endl;
cout<<age<<endl;
cout<<score<<endl;
}
class graduate:public student{
private:
float pay;
public:
graduate(int,int,float,float);
void display();
};
graduate::graduate(int n,int a,float sc,float p):student(n,a,sc),pay(p){}
void graduate::display(){
student::display();
cout<<pay<<endl;
}
int main(){
student st(12222,22,97.4);
graduate gr(353543,26,88.2,8000);
student *pt=&st;
pt->display();
pt=&gr;
pt->display();
return 0;
}
输出结果:
12222
22
97.4
353543
26
88.2
Press any key to continue
分享到:
相关推荐
这通常通过编译器为每个包含虚基类的派生类添加一个指向基类对象的指针来实现。这样可以确保每个派生类只访问到唯一的基类实例。 #### 三、案例分析 根据题目描述及给出的代码示例,我们可以具体分析如下: 1. **...
此外,C++还支持多态性,这使得我们可以使用指向基类的指针来调用虚函数,即使该指针实际指向的是派生类的对象。虚函数是在基类中声明为`virtual`的函数,它允许动态绑定,从而实现多态行为。 ```cpp class Base { ...
在C++编程中,类是面向对象编程的基础,它们用于封装数据和操作这些数据的方法。题目中的"基类"和"派生类"是面向对象编程中的重要概念,用于实现代码的复用和扩展。 首先,基类(Base Class)是其他类的基础,它...
如果pt指向基类对象s1,则调用基类的display函数。如果pt指向派生类对象g1,则调用派生类的display函数。 输出派生类的全部数据 在上面的示例程序中,我们可以看到,如果我们想输出派生类的全部数据,可以使用两种...
基类对象一般无法被显示转换为派生类对象,而从派生类对象到基类对象的转换能够执行。 在多重继承或虚继承的情况下,执行基类指针到派生类指针的显示转换时,有时需要将指针所存储的地址值进行调整后才能得到新指针...
同时,派生类的指针可以隐式转换为基类指针,这是因为C++支持向上转型,允许任何类型的派生类指针指向基类对象。然而,引用的转换与指针类似,也需要显式进行。需要注意的是,基类对象不能直接转换为派生类对象,...
这意味着你可以用派生类对象来执行那些只接受基类对象作为参数的函数。 2. **引用初始化**:派生类的对象也可以用于初始化基类对象的引用。这种机制使得我们可以在不知道实际对象类型的情况下,通过基类引用调用...
- 指向基类对象的指针释放派生类对象。 - 结果:派生类的析构函数不会被调用,可能导致资源泄漏。 3. **虚析构函数的影响** - 将析构函数声明为虚函数。 - 指向基类对象的指针释放派生类对象。 - 结果:正确地...
要求用基类指针数组,使他的每一个元素指向一个派生类对象。 2. 从键盘上输入一系列学生数据(学号,姓名,成绩),并将这些学生数据写入到文件Stud.dat中。然后,显示文件Stud.dat中的学生数据和相应的成绩等级...
在代码中,`student s1`和`graduate g1`分别创建了一个基类对象和派生类对象。首先,`pt`指向`s1`,调用`display`打印出`s1`的信息。接着,`pt`指向`g1`,由于`display`是虚函数,所以调用`pt->display()`会执行`...
- 派生类的对象的地址可以赋给指向基类的指针 - 但是,派生类对象不能直接访问基类的私有或保护成员,除非通过公有继承暴露的接口 2. 虚基类的特性: - 设置虚基类的主要目的是消除多继承时可能出现的二义性 - ...
- 通过虚函数演示多态性的使用,比如创建一个“动物”类及其派生类“狗”和“猫”,并通过指向基类的指针调用虚函数来展示不同的行为。 通过这些实例,读者可以更加深入地理解面向对象程序设计的核心概念和技术,并...
因此,派生类指针可以隐性转换为基类指针,允许我们用基类指针指向派生类对象。这种转换是安全的,因为基类指针只能访问派生类中的基类部分。但是,基类指针不能直接转换为派生类指针,因为基类指针可能无法访问派生...
设计多边形基类CPolygon及其派生类CTriangle、CRectangel和CCircle类,为各个类设计虚函数Input()、Area()、Print(),实现从数据文件读入数据,从而生成各种多边形对象,并且计算面积和输出对象信息,数据文件格式...
在C++中,派生类的指针可以隐式转换为基类指针,这意味着你可以用基类指针来指向派生类的对象,而无需任何特殊的转换操作。同样,派生类的引用也可以隐式转换为基类引用。然而,这种转换只能从派生到基,不能从基到...
在C++中,可以使用指向基类的指针或引用来调用虚函数,达到多态的效果。 综上所述,谭浩强的《C++类和对象》主要讲解了面向对象程序设计的基本概念,包括对象、类、封装性、信息隐蔽、抽象、继承和多态性。通过理解...
- D正确,派生类对象的地址可以赋值给指向基类的指针,这是多态性的体现。 6. **ifstream流类**:`ifstream`类用于处理输入文件。当定义一个`ifstream`对象并打开文件时,默认的打开模式是只读,即`ios::in`。如果...
6.5.2 用指向函数的指针作函数参数 6.6 返回指针值的函数 6.7 指针数组和指向指针的指针 6.7.1 指针数组的概念 6.7.2 指向指针的指针 6.8 有关指针的数据类型和指针运算的小结 6.8.1 有关指针的数据类型的小结 6.8.2...
对象指针可以指向链表中的节点,允许我们灵活地遍历和操作链表。此外,指针还可以用于实现动态内存分配,创建和管理链表结构。 派生类析构函数被声明为虚函数(即虚析构),这是为了确保当通过基类指针删除派生类...
总之,"VC++ 2005系列课程(5):指针与对象模型"是一个全面介绍C++核心概念的教程,涵盖了指针的使用、对象模型的构建以及如何在实际编程中运用这些概念。通过学习,你将能够编写更高效、更具可维护性的C++代码,并为...