C++语言程序设计之类和对象进阶(3)

这篇具有很好参考价值的文章主要介绍了C++语言程序设计之类和对象进阶(3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 编程练习一

        这一部分介绍C++友元函数、友元类和this指针。

1.1 友元函数

        友元函数,可以在类的成员函数外部直接访问对象的私有成员。文章来源地址https://www.toymoban.com/news/detail-823962.html

1.1.1 设计代码

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
class CCar;//提前声明CCar类,以便后面的CDriver类使用
class CDriver
{
public:
	void ModifyCar(CCar* pCar);//改装汽车
};
class CCar
{
private:
	int price = rand() % 1000;
	//声明友元
	friend int MostExpensiveCar(CCar cars[], int total);
	//声明友元
	friend void CDriver::ModifyCar(CCar* pCar);
};
void CDriver::ModifyCar(CCar* pCar)
{
	for (int i = 0; i < 5; i++)
	{
		pCar->price += 1000;//汽车改装后价值增加
		pCar++;
	}
}
int MostExpensiveCar(CCar cars[], int total)
{
	//求最贵汽车的价格
	int tmpMax = -1;
	for (int i = 0; i < total; i++)
	{
		cout << cars[i].price << " ";
		if (cars[i].price > tmpMax) {
			tmpMax = cars[i].price;
		}
	}
	cout << endl;
	return tmpMax;
}
int main()
{
	srand(time(NULL));
	CCar cars[5];
	int tmpMax;
	tmpMax = MostExpensiveCar(cars, 5);
	cout << tmpMax << endl;
	CDriver c;
	c.ModifyCar(cars);
	tmpMax = MostExpensiveCar(cars, 5);
	cout << tmpMax << endl;
	return 0;
}

1.1.2 执行结果

C++语言程序设计之类和对象进阶(3),C++程序设计,c++,开发语言,算法
图1 友元函数代码执行结果

到了这里,关于C++语言程序设计之类和对象进阶(3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++面向对象程序设计-基础入门(超详细)

    目录 一、c++概述 二、初识c++ 1、第一个c++程序  2、c++面向对象的三大特性(重要) 三、作用域运算符:: 1、使用namespace创建一个命名空间 2、命名空间只能定义在全局 3、 命名空间嵌套  4、随时将新的成员加入命名空间 5、命名空间中 函数的声明和实现分开   6、

    2024年02月16日
    浏览(51)
  • C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】

    开始课程:P11 1_1. this指针 课程链接:程序设计与算法(三)C++面向对象程序设计 北京大学 郭炜 课程PPT:github提供的对应课程PPT C++是没有自身编译器的,需要使用C语言的编译器,所以C++在编译时需要把语言转换为对应的C语言。 实例1: C++程序到C程序的翻译:(下图好理解,

    2024年02月22日
    浏览(54)
  • C++面向对象程序设计-北京大学-郭炜【课程笔记(三)】

    开始课程:P7 2_2. 构造函数 课程链接:程序设计与算法(三)C++面向对象程序设计 北京大学 郭炜 课程PPT:github提供的对应课程PPT 1、成员函数的一种 名字与类名相同,可以有参数,不能有返回值(void 也不行) 作用是对对象进行初始化,如给成员变量赋初值 如果定义类时没

    2024年02月19日
    浏览(47)
  • Go语言程序设计(十四)数据I/O对象及操作

            Go语言标准库bufio包,实现了对数据I/O接口的缓冲功能。它封装于接口io.ReadWriter、io.Reader和io.Writer中,并对应创建对象ReadWriter、Reader或Writer,在提供缓冲的同时实现了一些文本基本I/O操作功能。 ReadWriter对象可以对数据I/O接口io.ReadWriter进行输入输出缓冲操作,其结构定

    2024年02月13日
    浏览(49)
  • 【高级程序设计语言C++】特殊类设计

    拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 用C++11的话,可以使用特殊的语法来实现一个不能被拷贝的类。在C++11中,可以使用删除函数(deleted function)来禁用拷

    2024年02月10日
    浏览(51)
  • [ XJTUSE ]JAVA语言基础知识——第一章 面向对象程序设计思想

    类描述了一组有相同 特性 (属性)和相同 行为 (方法)的对象,类和对象是面向对象思想的两个核心概念 · 人类是一种类,每一个具体的人则是这个类的对象 用面向对象程序来模拟真实世界 发现并创建类 发现类的特征 发现类的行为 在面向对象程序中,对象的特征由各种

    2023年04月13日
    浏览(93)
  • 【C++ 程序设计】第 1 章:C++ 语言简介

    目录 一、C++ 语言的发展简史 二、C++ 语言的特点 (1)基本的输入/输出 (2)头文件和命名空间 (3)强制类型转换运算符  (4)函数参数的默认值  (5)引用和函数参数的传递 ① 引用的定义 ② 引用在函数中的使用 (6)const 与指针共同使用 (7)内联函数  (8)函数的

    2024年02月07日
    浏览(89)
  • 【高级程序设计语言C++】初识模板

    概念: 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。 具体格式: templatetypename T1, typename T2,…,typename Tn 返回值类型 函数名(参数列表){} 输出结果: typename是用来定义模板参数,也可以使用class(切记

    2024年02月15日
    浏览(45)
  • 【高级程序设计语言C++】异常与智能指针

    当我们编写程序时,可能会遇到各种错误和异常情况,例如除以零、访问无效的内存地址等。为了能够处理这些异常情况,C++提供了异常处理机制。 异常是程序在运行时发生的意外或错误情况。当异常发生时,程序会中断当前的执行流程,并跳转到异常处理代码块。异常处理

    2024年02月10日
    浏览(50)
  • C++语言程序设计第五版 - 郑莉(第六章课后习题)

    6-20 实现一个名为 SimpleCircle 的简单圆类。其数据成员 int* itsRadius 为一个指向其半径值的指针,存放其半径值。设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。 6-21 编写一个函数,统计一条英文句子中字母的个数,在主程序中实现输入输出。 6-22 编写函数

    2023年04月25日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包