实验二 类与对象的特性

Rectangle 设计并测试一个矩形类(Rectangle),属性为矩形的左下与右上角的坐标,矩形水平 放置。操作为计算矩形周长与面积。测试包括用成员函数和普通函数。 解:这里的矩形的 4 边分别与 x 轴 y 轴平行,为最简单的情况。注意参数有缺省值的函数 的声明和定义格式。 #include <iostream> #include <cmath> using namespace std... 阅读详情

实验名称

实验二 类与对象的特性

实验目的和要求

(1) 了解静态对象的定义和使用方法;

(2) 掌握静态数据成员和静态成员函数的定义和使用方法;

(3) 理解类的作用域、对象的作用域及生存周期;

(4) 掌握函数调用中参数的传递;

(5) 掌握常量类型;

(6) 掌握友元函数和友元类的定义及使用。

 

实验内容

1.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。

2.输出每个学生的姓名、学号、成绩;(2)统计并输出学生的总人数、总成绩、平均成绩、最高成绩、最低成绩。

3.设计一个程序,其中3个类CBabk、BBabk、GBank分别为中国银行类、工商银行类和农业银行类。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另一个友元函数total用于计算储户在这3家银行中的总存款数。

 

主要仪器设备

台式或笔记本电脑

实验记录

1. 

#include<iostream>

//#include"Rectangle.h"

#include<cmath>

 

using namespace std;

class Rectangle

{

private:

 

    float length;

protected:

    int tx, ty, bx, by;

public:

    Rectangle(int = 10, int = 10, int = 20, int = 20);

  /*

         Rectangle(Rectangle &r)//拷贝构造

    {

        tx = r.tx;

        ty = r.ty;

        bx = r.bx;

        by = r.by;

    }*/

 

    void Diagonal();

    void show();

    ~Rectangle(){}

};

Rectangle::Rectangle(int a, int b, int c, int d)

{

    tx = a;

    ty = c;

    bx = d;

    by = b;

}

void Rectangle::Diagonal()

{

    length = (double)sqrt((ty-by)*(ty-by) + (bx-tx)*(bx-tx));

}

 

void Rectangle::show()

{

    cout << "(" << tx << "," << ty << ")" << endl;

    cout << "(" << bx << "," << by << ")" << endl;

    cout << length << endl;

}

 

 

int main()

{

 

    Rectangle *p = new Rectangle(10, 10, 20, 20);

    p -> Diagonal();

    p -> show();

 

    delete p;

 

    return 0;

}

2. 

#include<iostream>

 

using namespace std;

 

class Student

{

  string name, num;//姓名 学号

  float score;//成绩

//  float min = 0, max = 0;

  static float sum;//总成绩

  static int count;//总人数

 

public:

  Student(string na, string nu, float g):name(na), num(nu), score(g){}

  void total();

//  void M();

  static float average();

  void show();

 

};

 

//float Student::average = 0;

void Student::total()

{

  sum += score;

  count++;

//  averge = sum/count;

}

 

float Student::average()

{

  return (sum/count);

}

 

void Student::show()

{

  cout << sum << " " << count << " " << Student::average();

}

int Student::count = 0;

float Student::sum = 0;

int main()

{

  string na, nu, u, a;

  float g, g1, min, max;

  cin >> a >> u >> g1;

  Student stu(a, u, g1);

  stu.total();

  min = max = g1;

 

  while(cin >> na >> nu >> g)

    {

       if(max < g)

         max = g;

       if(min > g)

         min = g;

 

       Student stu(na, nu, g);

       stu.total();

     //  stu.show();

 

     }

  cout << max << " " << min << " ";

 

   stu.show();

 

return 0;

}

3. 

 

#include <iostream>

 

 

using namespace std;

 

class BBank;

class GBank;

class CBank

{

private:

    double balance;

public:

    CBank(double i):balance(i){}

    friend void total(CBank &c, BBank &b, GBank &g);

    void show(){cout << balance;};

};

 

class BBank

{

private:

    double balance;

public:

    BBank(double i):balance(i){}

    friend void total(CBank &c, BBank &b, GBank &g);

};

 

class GBank

{

private:

    double balance;

public:

        GBank(double i):balance(i){}

friend void total(CBank &c, BBank &b, GBank &g);

};

 

void total(CBank &c, BBank &b, GBank &g)

//void total(CBank c, BBank b, GBank g)//感觉这里面的引用没必要,但引用了以后对象里的值不变?

{

cout << c.balance+b.balance+g.balance << endl;

}

 

 

int main()

{

double c,b,g;

        cin>>c>>b>>g;

        CBank c1(c);

        BBank b1(b);

        GBank g1(g);

        total(c1,b1,g1);

return 0;

}

 

遇到的问题和解决方法

1. 静态成员数据和静态函数成员用的不熟

解决方法:看了看书,根据书上的代码变换了下

2.第三个友元函数的运用不太行

解决方法:目前还是有点晕,就关于引用不引用的问题

心得体会

光看书是不行的,还得实践,看懂了不一定会用。

友元函数还得查查。

 

#include <iostream>


using namespace std;

class BBank;
class GBank;
class CBank
{
private:
    double balance;
public:
    CBank(double i):balance(i){}

    friend void total(CBank c, BBank b, GBank g);
    void show(){cout << balance;};
};

class BBank
{
private:
    double balance;
public:
    BBank(double i):balance(i){}
    friend void total(CBank c, BBank b, GBank g);
};

class GBank
{
private:
    double balance;
public:
        GBank(double i):balance(i){}
friend void total(CBank c, BBank b, GBank g);
};

//void total(CBank &c, BBank &b, GBank &g)
void total(CBank c, BBank b, GBank g)//有无&都可以
{
cout << c.balance+b.balance+g.balance << endl;
}


int main()
{
double c,b,g;
        cin>>c>>b>>g;
        CBank c1(c);
        BBank b1(b);
        GBank g1(g);
        total(c1,b1,g1);
return 0;
}


C++ 实验四 类和对象(二) 一、目的要求 1.理解面向对象的程序设计的特点; 2.学会构造函数的使用和函数重载; 3.学会对象指针的使用、对象的动态建立和释放; 4.理解类的封装性和信息隐藏、析构函数的作用。 二、实验内容: 1.定义学生类,包括学号、姓名、性别、成绩,学生分为两类,课程门数不同,并将课程成绩全部初始化为0;假设有n个学生,由键盘输入学生信息; 2.定义类成员函数,完成修改学生的信息,统计所有学... 阅读详情

相关推荐

类与对象(二)

类与对象的定义与访问、面向对象的方法支持继承、多态机制、定义类和对象

weixin_50512050的博客 1294

C++编程:类与对象

1.定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。每个类都包含一个私有数据balance,用于存放储户在该行的存款数,另一个友元函数total用于计算储户在这3家银行中的总存款数。(2)统计并输出学生的总人数、总成绩、平均成绩、最高成绩、最低成绩。(3) 理解类的作用域、对象的作用域及生存周期;

qq_52052302的博客 1672

西南科技大学C++程序设计实验二(类与对象一)

(1)在主函数中使用Rectangle定义一个目的对象rec_1,调用构造函数初始化其数据成员length与breadth的值分别为2和3,使用成员函数output()输出其数据成员的值,使用成员函数area()计算对象rec_1的面积;(2)在主函数中使用Rectangle定义一个目的对象rec_2,通过set()函数对其数据成员重新赋值,并使用area()函数计算输出其面积,思考可否重新调用构造函数完成上述set()函数的功能?重点:掌握类的定义与实现,丰富类的数据成员与成员函数,拓展其功能。

Welcome To My6n Blog 1880

面向对象程序设计基础(二)矩形

命名App1.java 要求: (1)按照题目所给变量名称、类型和方法名称进行编程,禁止修改; (2)本题中所有内容写在源文件App1.java中。 (3)编程环境可选,Eclipse和JDK均可。 1、编写一个矩形类Rectangle,包含: 成员变量: 两个属性:矩形的宽width;矩形的高length。 两个构造器方法: (1)一个带有两个参数的构造器方法,用于将width和length属性初化; (2)一个不带参数的构造器,调用构造方法(1)将矩形初始化为宽和高都为10。 普通方法: (1)设置ge

胡毛毛的博客 3285

从零部署Stable Diffusion:本地环境搭建完整教程

本文专为“想自己跑Stable Diffusion但完全没经验”的新手设计,覆盖从硬件准备到生成第一张图的完整流程。不涉及复杂算法原理,但会讲清每个操作的“为什么”(比如为什么需要显卡?为什么要装CUDA?),帮你知其然更知其所以然。先检查硬件是否达标(显卡是核心!安装必要软件(操作系统、Python、CUDA)下载Stable Diffusion核心代码和模型解决常见报错,生成第一张图附赠模型库推荐和性能优化技巧显卡是核心:N卡+足够显存(至少6G)是本地部署的基础。CUDA是翻译。

AI算力网络与通信的博客 1294

不用买VR设备!用UE5内置模拟器开发虚拟现实项目的完整教程

本文提供了一套无需购买昂贵VR硬件的虚拟现实开发最佳实践方案。详细介绍了如何利用虚幻引擎5内置的XR模拟器,从零开始配置开发环境、模拟操作、构建场景并实现核心交互逻辑。通过这套纯软件方案,开发者可以高效学习VR开发核心,大幅降低入门门槛和成本。

weixin_29019241的博客 621

C++学习记录3:定义一个矩形类Rectangle

定义一个矩形类Rectangle,矩形的左上角(Left,Top)与右下角坐标(Right,Bottom)定义为保护数据成员。用公有成员函数Diagonal()计算出矩形对角线的长度,公有成员函数Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用new运算符动态建立矩形对象r1,初值为(10,10,20,20)。然后调用Show()显示矩形左上角与右下角坐标及对角线长度。最后用delete运算符回收为矩形动态分配的存储空间。 #include<iostream> #includ

qq_64297998的博客 7466

量子密钥分发系统的设计与实现(二):光路子系统初步讨论

本文主要对量子密钥分发系统中的光路子系统方案进行了讨论。

量子领域相关话题 2407

矩形类定义【C++】

Description 定义一个矩形类,数据成员包括左下角和右上角坐标,定义的成员函数包括必要的构造函数、输入坐标的函数,以及计算并输出矩形面积的函数。要求使用提示中给出的测试函数并不得改动。 Input 四个数,分别表示矩形左下角和右上角顶点的坐标,如输入3.7 0.4 6.5 4.9,代表左下角坐标为(3.7, 0.4),右上角坐标为(6.5, 4...

weixin_30740295的博客 1381

ADS笔记,新旧两组仿真数据进行绘图和列表对比

原理图器件参数的不同,怎么进行对比观看,操作如下。

彭辉荣的博客 3869

RK3588+TRL8367s 四网口千兆交换机配置与优化实战

本文详细介绍了基于RK3588高性能SoC与TRL8367s千兆交换芯片构建四网口交换机的完整实战流程。内容涵盖硬件连接、设备树配置、内核驱动加载、性能优化及常见问题排查,重点解析了RGMII时序调试、DSA架构配置等关键步骤,为嵌入式网络设备开发提供实用指南。

weixin_29266647的博客 675

路科V2实验二分析与详解——深入掌握OOP思想

路科V2实验二分析与详解——深入掌握OOP思想 去发现同类优质开源项目:https://gitcode.com/ 在此资源中,我们为您精心准备了“路科V2实验二分析与详解”的学习材料,这是一份以OOP(面向对象编程)思想为核心的学习资源。本资源特别适合System Verilog的初学者,可以帮助您从基础入门到进阶提升,快速提高您的动手实践能力。 实验内容介绍 本实验包含以下四个精心设计的小实验,...

gitblog_06720的博客 622

BAPI_OUTB_DELIVERY_CHANGE扩展指南:利用EXTENSION2与SMOD_V50B0001实现自定义字段更新

本文详细解析了如何利用BAPI_OUTB_DELIVERY_CHANGE的EXTENSION2参数与增强点SMOD_V50B0001,在不修改标准代码的前提下,安全、标准地更新SAP交货单的自定义字段。通过清晰的步骤指南和实战代码示例,帮助开发者掌握通过增强字段实现定制化业务需求的完整流程与调试技巧。

fanta的博客 451

什么是类?什么是对象?类与对象之间是什么关系?类的特性有哪些?

一、什么是类? 1、类是一种抽象的概念。 2、类:具有相同的特性(数据元素)和行为(功能)的对象的抽象就是类。对象的抽象就是类,类的具体化就是对象,也可以说类的实例化就是对象,类实际上就是一种数据类型。类具有属性用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。 二、什么是对象? 1、对象是一种具体概念 2、对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于

weixin_42433025的博客 1万+

迈创Cameralink采集卡与MIL软件集成开发实战指南

本文详细介绍了迈创Cameralink采集卡与MIL软件的集成开发实战指南,涵盖硬件安装、驱动配置、MIL软件深度设置及图像采集处理等关键步骤。特别适合工业视觉检测和医疗影像领域,通过优化配置和性能调优,实现高速稳定的图像处理。

weixin_29204205的博客 423

一句话看懂 vibing-steampunk

摘要: vibing-steampunk(vsp)是一个连接SAP ABAP开发工具(ADT)与AI编码代理(如Claude、GitHub Copilot)的桥梁,通过MCP协议实现自动化代码读写、调试和部署。它利用ADT API直接访问SAP系统,绕过传统GUI操作,支持ECC和S/4HANA等环境。工具提供包分析、依赖检查、LUW行为识别等功能,显著提升ABAP项目维护效率。其创新Hyperfocused模式和方法级编辑大幅降低token消耗,而上下文压缩技术则优化了AI对ABAP代码的理解能力,特别适

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 114

Java 2实用教程(第5版)实验指导与习题解答 第4章-类与对象

实验 1 机动车 实验目的 本实验的目的是让学生使用类来封装对象的属性和功能。 实验要求 编写一个 Java 应用程序,该程序中有两个类: Vehicle(用于刻画机动车)和 User(主类)。具体要求如下: Vehicle 类有一个 double 类型的变量 speed,用于刻画机动车的速度,一个 int 型变量 power,用于刻画机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有减速功能;定义了 speedDown()方法,体现机动车有减速功能; 定义了 setPower(in

GTC的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java类与对象实验,实验二 类与对象(一)

南昌航空大学实验报告2020 年 4 月 30 日课程名称:面向对象程序设计A 实验名称: Java程序控制结构学号: 19201407 姓名:陈世林同组人:指导教师评定: 签名:一、实验目的1、 掌握类与对象的基本概念;2、 掌握类的声明、创建与使用方法;3、 掌...

weixin_35112750的博客 454

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java实验一 类和对象实验

Driver类包含一个主方法,用来设定Track的长度和名称,然后把它们的值打印出来。特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。(二)Java中的每个类都有构造方法,用来初始化该类的一个新对象。方法重写允许通用类指定方法,这些方法对该类的所有派生类都是公有的,同时该方法允许子类定义这些方法中的某些或全部的特殊实现。多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用“一个接口,多个方法”来描述,可以通过方法的参数和类型引用实现。

hackermengzhi的博客 1302

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

实验2 类和对象的定义与使用

实验2 类和对象的定义与使用 1、实验目的 (1)掌握类与对象的定义; (2)掌握构造函数和析构函数的实现方法; (3)掌握静态成员函数和友元函数的使用方法; (4)掌握类对象作为成员的使用方法。 2、实验学时:6学时 3、实验内容 (1)声明一个CPU类,在该类中包括数据成员rank(等级)、frequency(频率)、voltage(电压)。其中,rank为字符型,可以取等级’A’、’B’、’C’、’D’;frequency为整型(单位MHz),voltage为浮点型;还包括成员函数G.

m0_52796585的博客 2229

c++类与对象二

类的实例化、大小计算、this指针详解

sdmdnf的博客 1083

C++学习——类与对象的特性

类与对象的特性

2301_80888963的博客 1245

类与对象(二)

面向程序的三大特性:封装、继承、多态封装:通过将数据(属性)和操作数据的方法(行为)绑定在一起,隐藏内部实现细节,仅对外提供可控的访问接口。

2401_88051411的博客 1万+

C++ 类与对象

C++ 类与对象

墨上烟雨 8009

C++[类与对象](二)

因为:main方法中创建了Date对象d,而d中包含4个成员变量,其中_year, _month,_day三个是内置类型成员,销毁时不需要资源清理,最后系统直接将其内存回收即可;而 _

auroraA7的博客 1986

实验二 类与对象定义初始化

jc++基础实验精品

weixin_58879043的博客 250
上一篇: 实验一 C++基础
下一篇: 实验三 继承与派生
KLFTESPACE
博客等级 码龄9年 66粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值