Skip to Main Content
C++程序设计:原理与实践(进阶篇)(原书第2版)
book

C++程序设计:原理与实践(进阶篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced content levelIntermediate to advanced
450 pages
10h 35m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(进阶篇)(原书第2版)

附录E GUI实现

当你最终理解了你在做什么时,事情就会向正确方向发展了。

——Bill Fairbank

本附录介绍回调函数、Window、Widget和Vector_ref的实现细节。在第21章中,由于还没有介绍指针和类型转换的相关知识,我们无法给出GUI实现的完整描述,因此将这部分内容放到本附录中。

E.1 回调函数实现

回调函数可实现如下:

如果你已经理解了第12章,很显然Address必须是void*。而且,当然,reference_to<Simple_window>(addr)必须是由名为addr的void*创建的Simple_window的引用。但是,除非你以前有相关的程序设计经验,否则在阅读第12章之前,你不会有“很显然”或者“当然”的感觉。因此,让我们好好看一下地址使用的细节。

如附录A.17所述,C++提供了类型命名的功能。例如:

这意味着现在就可以用名字Address来代替void*了。在此,我们用Address这个名字来强调传递了一个地址,并掩盖这样一个事实:void*是指向未知类型的对象的指针。

因此,cb_next()接受一个名为addr的void*参数,并立即用某种方法将其转换为Simple_window&:

reference_to是一个模板函数(见附录A.13): ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

JAVASCRIPT之美|聽頂尖程式設計師闡述他們的思維

Anton Kovalyov
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9787111562528