南京邮电大学C++实验一(类和对象的定义及使用)

0 无关内容

类和对象是面向对象编程(OOP)中最核心的两个概念。类是创建对象的模板,而对象则是类的实例。这一千字将详细解析类和对象的定义、特点及如何使用它们来编写程序

类在编程中扮演着标准或蓝图的角色。它封装了数据和操作数据的方法。在类中,可以定义变量(通常称为属性或字段)和方法(函数)。例如,一个简单的Student类可能包含姓名、学号等属性,以及一些方法如更改姓名、查询学号等。

对象是类的实例化结果。当代码创建一个类的新实例时,系统会为该实例分配内存空间,并按照类的定义初始化状态和行为。以Student类为例,一旦根据这个类创建一个对象,就可以具体地设置其姓名和学号,以及调用其方法执行特定操作。

使用类和对象,程序员可以更贴近实际业务逻辑地构建程序。每一个对象都可以独立操作,拥有自己的属性集合,而相同类的对象之间可以通过方法的调用进行交互,实现复杂的功能。

让我们通过一段简单的代码来展示类和对象的使用:

// 定义学生类
class Student {
public:
    // 构造函数,用于创建对象时初始化
    Student(string name, int id) {
        this->name = name;
        this->id = id;
    }

    // 方法,用于设置学生姓名
    void setName(string name) {
        this->name = name;
    }

    // 方法,用于获取学生ID
    int getId() {
        return id;
    }

private:
    string name;  // 学生姓名
    int id;       // 学生学号
};

int main() {
    // 创建一个Student对象
    Student student("John", 123);

    // 调用对象的方法
    student.setName("Jane");
    cout << "Student ID: " << student.getId() << endl;

    return 0;
}

在上述代码中,我们首先定义了一个Student类,该类有两个私有属性:nameid,以及两个公共方法:setNamegetId。然后在main函数中,我们创建了一个Student类的对象student,并通过该对象调用了setNamegetId方法。

类和对象的使用使得代码更加模块化,易于理解和维护。对象提供了一种非常有效的方式来模拟真实世界中的实体和交互,使得程序设计更加直观。同时,类的设计还允许代码重用,同类的对象可以共享相同的方法和属性,减少了代码冗余。

总的来说,类和对象是实现面向对象编程范式的基础,它们的使用不仅提高了软件开发的效率,也极大地增强了程序的可扩展性和可维护性。掌握如何合理地定义类和使用对象,对于每个软件开发者来说都是基本且重要的技能。

1 简介

C++是一种广泛使用的编程语言,它支持过程化、面向对象以及泛型编程。在C++中,类和对象是实现面向对象编程的基本构建块。类定义了一组数据和操作,而对象则是类的实例。本文旨在详细介绍C++中类和对象的定义与使用。

1.1 C++类的定义

在C++中,类是一种用户自定义的数据类型,可以包含数据成员和操作这些数据的成员函数。类的定义通常包括以下几个部分:

  • 数据成员:这些是类中的变量,用于存储与类相关的信息。
  • 成员函数:这些是定义在类中的函数,用于操作类的数据成员。
  • 访问修饰符:C++中的访问修饰符有publicprotectedprivate,它们决定了类成员的访问级别。

类的定义示例如下:

class MyClass {
public: // 公共部分
    int myNum;        // 数据成员
    void displayNum() { // 成员函数
        cout << "Number: " << myNum << endl;
    }
private: // 私有部分
    float privateFloat; // 数据成员
};

1.2 C++对象的创建和使用

一旦定义了类,就可以通过该类创建对象。对象是类的实例,每个对象都有自己的数据成员副本。创建对象的过程包括为新对象分配内存,并调用构造函数初始化对象。

对象的创建示例如下:

MyClass obj1; // 创建MyClass类的对象obj1
obj1.myNum = 5; // 访问对象的数据成员
obj1.displayNum(); // 调用对象的成员函数

1.3 构造函数和析构函数

C++类可以包含两种特殊类型的成员函数:构造函数和析构函数。构造函数用于初始化对象,当创建类的实例时自动调用。析构函数用于清理资源,当对象即将消失时自动调用。

构造函数和析构函数的示例如下:

class MyClass {
public:
    MyClass() { // 构造函数
        cout << "Object is being created" << endl;
    }
    ~MyClass() { // 析构函数
        cout << "Object is being deleted" << endl;
    }
};

MyClass obj; // 创建对象时调用构造函数
// ... 使用对象 ...
// 对象销毁时调用析构函数

1.4 封装、继承和多态

C++的类支持三大面向对象编程特性:封装、继承和多态。

  • 封装:隐藏对象的内部状态和实现细节,只提供公

2 源代码

#include <iostream>
using namespace std;

class BookCard
{
private:
	string id;          //借书证学生的学号
	string stuName;    //借书证学生的姓名
	int number;       //所借书的数量
public:
	//用来初始化3 个数据成员,是否带默认参数值参考结果来分析
	BookCard(string id, string stuName, int number):
		id(id), stuName(stuName), number(number) {}
	BookCard()
	{
		
	}
	void display()   //显示借书证的3 个数据成员的信息
	{
		cout << id << " " << stuName << " " << number << endl;
	}
	bool borrow()   //已借书数量不足10 则将数量加1,数量达到10 则直接返回false
	{
		if (number >= 10)
		{
			return false;
		}
		number++;
	}

};

void f(BookCard& bk)
{
	if (!bk.borrow())
	{
		bk.display();
		cout << "you have borrowed 10 books,can not borrow any more!" << endl;
	}
	else
	{
		bk.display();
	}
}
int main()
{
	BookCard bk1("B20190620", "东平", 10), bk2;
	f(bk1);
	f(bk2);
	return 0;
}

2

#include <iostream>
using namespace std;

class Time
{
private:
	int Hour;
	int Minute;
	int Second;
public:
	Time()
	{

	}
	Time(int hour, int minute, int second):Hour(hour), Minute(minute), Second(second)
	{
		
	}
	void setTime(int hour, int minute, int second)
	{
		this->Hour = hour;
		this->Minute = minute;
		this->Second = second;
	}
	void addSecond()
	{
		this->Second++;
		if (Second >= 60)
		{
			Second = 0;
			Minute++;
		}
		if (Minute >= 60)
		{
			Minute = 0;
			Hour++;
		}
		if (Hour >= 24)
		{
			Hour = 0;
		}
	}
	void PrintTime()
	{
		cout << Hour << ":" << Minute << ":" << Second << endl;
	}

	void copyConstructor(Time time)
	{
		
	}

	~Time()
	{

	}
};

void f(Time  t)
{
	t.PrintTime();
}

int main()
{
	Time t(8, 0, 59);
	t.PrintTime();

	t.addSecond();
	t.PrintTime();
}

3

#include <iostream>
using namespace std;

class Boy
{
private:
	friend class Girl;
	string Name;
	int Age;
public:
	Boy()
	{

	}
	Boy(string name, int age):Name(name), Age(age){}

	void print()
	{
		cout << "Name: " << Name << " Age = " << Age << endl;
	}
	void VisitGirl(Girl& girl)
	{
		//cout << "Name: " << girl.Name << " Age = " << girl.Age << endl;
	}
	~Boy()
	{

	}
};

class Girl
{
private:
	string Name;
	int Age;
public:
	Girl()
	{

	}
	Girl(string name, int age) :Name(name), Age(age) {}

	void print()
	{
		cout << "Name: " << Name << " Age = " << Age << endl;
	}
	void VisitBoy(Boy& boy)
	{
		cout << "Name: " << boy.Name << " Age = " << boy.Age << endl;
	}
	~Girl()
	{

	}
};



int main()
{
	Boy boy("Nan", 18);
	Girl girl;
	girl.VisitBoy(boy);
	return 0;
}
  • 6
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦是远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值