WIN32 桌面应用编程综合实验一学习记录



引用传递和指针传递的区别和联系

case ID_SETTING_FONT:GetDrawFont(hWnd, gs_logFont, &gs_TextColor); break;

logFontpColor 的用法体现了 C++ 中两种不同的参数传递方法:引用传递和指针传递

从某种角度来看,引用传递(如 LOGFONT& logFont)和指针传递(如 COLORREF* pColor)在效果上是相似的,尤其是在它们允许函数修改外部传入变量的这一点上。但是,它们在语法和某些语义上存在差异:

  1. 修改外部变量:
  • 无论是引用还是指针传递,函数都能修改调用者传递的变量。
  • 在引用传递中,你直接操作原始变量,就像它是本地变量一样。
  • 在指针传递中,你需要通过指针间接操作原始变量。
  1. 语法和可读性:
  • 引用传递在使用时更像是直接操作变量,这使得代码通常更简洁、更易读。
  • 指针传递涉及间接引用(通过指针),这在语法上更复杂一些,需要显式地使用指针和解引用操作。
  1. 可选参数和空值处理:
  • 指针可以被设置为 NULL 或 nullptr,这允许函数检测和处理“没有对象”的情况,使指针传递适合于可选参数。
  • 引用必须引用某个实际存在的对象,不能是空的,因此它不适合表示可选的参数。
  1. 安全性:
  • 引用通常被认为在某些方面更安全,因为它们保证引用了一个有效的对象(除非你有非常不安全的代码)。
  • 指针可能是 NULL,或者可能指向无效的内存区域,这增加了出错的可能性。

综上所述,虽然这两种方法在允许函数修改传入变量这一点上是相似的,但它们各有特点和适用场景。引用传递适合于必须提供的参数,而指针传递更灵活,适合于可选参数或可能不提供的参数。


如何创建一个空的WINDOWS桌面项目

在这里插入图片描述

但上述操作会创建一个全新的空文件,因此是不推荐的,如果选用用下面的WINDOWS桌面应用程序,代码框架会自动生成,如图

在这里插入图片描述

自动生成的框架界面如下图所示:

在这里插入图片描述


C++编程中函数声明、定义和链接的基本概念

  1. 头文件和函数声明:头文件(通常是.h或.hpp文件)用于声明函数、类、变量等。声明仅仅是告诉编译器该函数的存在,其具体实现(定义)可以在别处。

  2. 源文件和函数定义:函数的具体实现(即定义)通常放在.cpp文件中。这个定义是函数声明的具体实现,包含了函数应当执行的具体代码。

  3. 包含头文件:当您在一个.cpp文件中包含了声明函数的头文件时,您实际上是在告诉编译器:这里有一些函数、类等的声明,请在编译时考虑它们

  4. 链接过程:在C++中,当您编译一个项目时,编译器首先编译每个源文件(.cpp文件),将它们转换成对象文件(.obj文件)。然后,链接器将所有的对象文件和必要的库文件一起链接,生成最终的可执行文件。在链接过程中,如果一个.cpp文件中调用了另一个.cpp文件中定义的函数,链接器将负责找到这个函数的定义并正确地链接它们。

  5. Visual Studio的工作方式:在Visual Studio这样的集成开发环境中,当您创建一个项目并添加多个.cpp文件时,它会自动处理编译和链接的过程。只要您正确地在一个.cpp文件中定义了函数,并在其他需要调用这个函数的.cpp文件中包含了相应的头文件,Visual Studio会在构建过程中自动找到并链接这些函数定义。

总结:在您的情况下,如果您在一个头文件中声明了函数,在一个.cpp文件中定义了它,并且另一个.cpp文件包含了这个头文件,那么只要这些文件都是同一个Visual Studio项目的一部分,Visual Studio会在编译和链接过程中自动处理一切,确保函数能被正确找到和使用

相关推荐

  1. Win32编辑框消息学习

    2024-01-10 18:40:02       33 阅读
  2. MAX96712学习记录编程实践

    2024-01-10 18:40:02       42 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-10 18:40:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-10 18:40:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-10 18:40:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-10 18:40:02       20 阅读

热门阅读

  1. linux 云课堂笔记day2

    2024-01-10 18:40:02       32 阅读
  2. PostgreSQL认证考试PGCA、PGCE、PGCM

    2024-01-10 18:40:02       66 阅读
  3. Elastic Stack学习

    2024-01-10 18:40:02       32 阅读
  4. python类装饰器基础

    2024-01-10 18:40:02       36 阅读
  5. 数据结构-怀化学院期末题(490)

    2024-01-10 18:40:02       37 阅读
  6. leetcode滑动窗口问题总结 Python

    2024-01-10 18:40:02       29 阅读