`
king_tt
  • 浏览: 2232206 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux下编写C++实例程序(三)

阅读更多

实例1

Point类的完整程序

知识点:学习复制构造函数,比较它与普通构造函数的区别。普通构造函数是在对象创建时被调用,而复制构造函数是在以下3种情况下都会被调用,分别为:

① 当用类的一个对象去初始化该类的另一个对象时

② 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时

③ 如果函数的返回值是类的对象,函数执行完成返回调用者时。

源程序:

运行结果如下:

注意:在有些编译环境下,上面的运行结果可能不尽相同,因为编译器由时会针对复制构造函数的调用做优化,避免不必要的复制构造函数调用。在windows的vc6.0上的运行结果会在4 和 1之间再加一行 Calling the copy construcor.

实例2

游泳池改造预算,Circle类。

一圆形游泳池如图1所示,现在需要在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为 35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。

问题分析:游泳池及栅栏可以看作是两个同心圆,大圆的周长就是栅栏的长度,圆环的面积就是过道的面积,而环的面积是大、小圆的面积之差。可以定义一个圆类来描述这个问题:圆的半径是私有成员数据,圆类应当具有的功能是计算周长和面积。分别用两个对象来表示栅栏和游泳池,就可以得到过道的面积和栅栏的周长。利用已知的单价,便可以得到整个改建工程的预算。

源程序:

程序执行结果

实例3

使用一个类来描述线段,即线段(Line)类。使用上一实例2的 Point类的对象来表示端点。这个问题可以用类的组合来解决,使Line类包括Point类的两个对象p1和p2,作为其数据成员。Line类具有计算线段长度的功能,在构造函数中实现。

知识点:①组合类构造函数的定义的一般形式为:

类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),...

{类的初始化}

②如果要为组合类编写复制构造函数,则需要为内嵌成员对象的复制构造函数传递参数。例如,假设C类中包含B类的对象b作为成员,C类的复制构造函数形式如下:

C : : C(C &c1) : b(c1.b) {...}

源代码:

执行结果(根据执行结果好好分析一下程序的执行流程)

分析:主程序在执行时,首先生成两个 Point类的对象,然后构造 Line类的对象line,接着通过复制构造函数建立 Line类的第二个对象 line2,最后输出两点的距离。在整个运行过程中,Point类的复制构造函数被调用了6次,而且都是在 Line类构造函数体运行之前进行的,它们分别是两个对象在 Line构造函数进行函数参数形实结合时,初始化内嵌对象时,以及复制构造line2时被调用的。两点的距离在Line类的构造函数中求得,存放在其私有数据成员len中,只能通过公有成员函数 getLen()来访问。

 

 

 

分享到:
评论

相关推荐

    linux下的C++编程.pdf

    在Linux下编程的注意事项:文档中包含了“nonewlineatendoffile”这样的提示,这可能意味着在编写C++代码时应当确保源文件以新行结束,这在UNIX系统中是一个常见的编码标准。 总结来说,文档涵盖了在Linux环境下...

    C++ Snmp实例程序

    在这个“C++ SNMP实例程序”中,我们将会探讨如何在Visual Studio环境下使用C++进行SNMP编程。 首先,SNMP主要由三部分构成:管理站(Manager)、代理(Agent)和管理信息库(MIB)。管理站负责发送请求,而代理则...

    linux下lua调用C++的经典实例.rar

    这个"linux下lua5.3调用C++动态库的经典实例"提供了一个清晰的示例,展示了如何在Lua中调用C接口,进而调用C++类以执行特定任务。 首先,我们需要了解Lua调用C/C++的基本原理。Lua提供了一套C API,允许开发者在C/...

    linux环境下利用zlib库实现压缩目录的c++程序

    在Linux环境下,使用C++编写一个能够利用zlib库压缩目录至.zip文件的程序是一项实用技能。zlib库是广泛使用的开源压缩库,它提供了多种数据压缩算法,包括DEFLATE,这是.zip文件格式常用的算法。以下将详细介绍如何...

    GNU Linux C++编程

    《GNU Linux C++编程》是一本专注于在Linux环境下进行C++程序开发的电子书,它涵盖了C++语言的基础以及在Linux系统上的高级应用。Linux作为一款开源操作系统,为C++开发者提供了丰富的工具和库,使其成为开发高效、...

    Linux下的C-C++编程

    本教程主要针对Linux环境下的C和C++编程,特别是如何利用Linux API进行程序设计。 1. **C语言编程基础**:C语言是一种强大的系统编程语言,被广泛用于编写操作系统、设备驱动程序和嵌入式软件。在Linux下编程,需要...

    linux下qt设计实例

    在"Linux窗口程序设计-Qt4实例分析"中,你将找到有关如何在Linux环境下用Qt4编写窗口程序的详细步骤和代码示例。这可能涵盖如何配置开发环境,如何创建和布局窗口,以及如何使用各种控件和组件。通过这些实例,你将...

    LINUX环境下用C++实现SNMP网管协议

    在Linux环境下用C++实现SNMP(简单网络管理协议)是一项深入理解网络管理技术的关键实践。根据提供的文件信息,本文将详细阐述如何在Linux操作系统上使用C++编程语言实现SNMP网管协议,涵盖从理论基础到实际编程的全...

    c++钩子函数:copy hook_linux函数hook

    在C++编程中,我们可以利用钩子来跟踪和控制程序的行为,例如在这个场景下,我们关注的是文件复制操作。"copy hook"特指针对Linux系统中的文件复制过程进行拦截和修改的钩子函数。 在Windows系统中,钩子函数通常...

    在linux下用Qt编写的一个程序

    在Linux环境下,Qt是一个强大的C++图形用户界面应用程序开发框架,它允许开发者创建美观、功能丰富的桌面和移动应用。这个程序描述的是一个基于Qt的项目,它的主要功能是从某个特定地址获取点数据,并在图形界面上...

    linux下C++连接数据库程序源码附加编译命令

    本文将深入探讨如何在Linux下用C++编写连接数据库的程序,并附上编译命令。 首先,C++连接数据库通常依赖于特定的库,如MySQL Connector/C++、PostgreSQL的libpqxx或SQLite3的API。以MySQL为例,你需要安装MySQL的...

    linux下C++实现插件功能

    在Linux环境下,C++开发插件功能是一种常见的需求,它能增强软件的可扩展性和灵活性。本教程将探讨如何利用Qt5.8框架在Linux上实现动态插件系统,主要涉及动态链接库(.so库)的使用。下面我们将详细讨论相关知识点...

    清华大学 Linux下C++开发课件

    【标题】"清华大学 Linux下C++开发课件"是一份由清华大学知名教授董渊主讲的C++编程课程资料,特别关注在Linux操作系统环境下的应用开发。这份课件结合了理论与实践,旨在帮助学生深入理解和掌握C++编程语言以及在...

    Qt小实例 C++资源

    在本实例中,我们探索的是一个使用Qt Creator和C++编写的简单应用,名为"Qt小实例 C++资源"。这个实例特别适合初次接触Qt框架的开发者,它以"HelloWorld"为工程名称,但已经超越了传统的"Hello, World!"程序,引入了...

    Linux编程技术(C和C++)

    在Linux中,进程是程序的执行实例,而线程是共享同一地址空间的并发执行流。理解进程间通信(IPC,如管道、信号量、套接字)和线程同步(互斥锁、条件变量)是编写多任务程序的关键。 通过深入学习这些基础知识,...

    在Qt中用C++编写的计算器程序

    在Qt中用C++编写的计算器程序是一种将C++编程语言与Qt框架相结合,实现桌面应用的典型示例。Qt是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)组件,使得开发者可以方便地创建出美观、功能丰富...

    Linux-C语言编程宝典.rar_C语言_LINUX c++ 编程_linux_linux c++_linux 编程

    书中可能通过实例演示如何编写C程序,让读者能够实际操作并理解代码的运行机制。 其次,书中的重点在于Linux系统接口和系统调用。Linux系统提供了大量的API供开发者使用,如文件操作、进程管理、内存管理、网络通信...

    C++Builder5 and C++Builder6编程实例精解编程实例精解(包含 Builder6 PDF档).7z

    书中可能包含了如何使用IDE创建项目、编写代码、调试程序、使用组件库进行界面设计、与数据库交互的步骤,以及如何利用C++Builder5和C++Builder6的特性来提高开发效率。 对于初学者或希望深入理解C++Builder5和C++...

Global site tag (gtag.js) - Google Analytics