From e17cd54c0d892ba06ee91f33c698f6e72386e99a Mon Sep 17 00:00:00 2001
From: zxin <ninthozward1@outlook.com>
Date: 星期一, 19 五月 2025 17:09:52 +0800
Subject: [PATCH] 修改了错误示例

---
 Test/mainwindow.cpp |   99 +++++++++++++++++++++++--------------------------
 1 files changed, 47 insertions(+), 52 deletions(-)

diff --git a/Test/mainwindow.cpp b/Test/mainwindow.cpp
index 12585fd..e76cea5 100644
--- a/Test/mainwindow.cpp
+++ b/Test/mainwindow.cpp
@@ -1,66 +1,61 @@
 #include "mainwindow.h"
+
 #include "ui_mainwindow.h"
 
-MainWindow::MainWindow(QWidget *parent)
-    : QMainWindow(parent)
-    , ui(new Ui::MainWindow)
-{
-    ui->setupUi(this);
+MainWindow::MainWindow(QWidget* parent)
+    : QMainWindow(parent), ui(new Ui::MainWindow) {
+  ui->setupUi(this);
 
-    /**********类型转换错误**********/
-    //1.隐式类型转换导致的精度损失
-    double numDouble = 3.1415926;
-    int numInt = numDouble; // 隐式转换,精度损失,没有进行显式 static_cast
-    //int numInt = static_cast<int>(numDouble); // 显式转换,明确表示接受精度损失
-    //int numInt = (int)numDouble;
+  /**********类型转换错误**********/
+  // 1.隐式类型转换导致的精度损失
+  double numDouble = 3.1415926;
+  int numInt = numDouble;  // 隐式转换,精度损失,没有进行显式 static_cast
+  // int numInt = static_cast<int>(numDouble); // 显式转换,明确表示接受精度损失
+  // int numInt = (int)numDouble;
 
-    //2.强制类型转换错误
-    void* void_ptr = nullptr;
-    int* int_ptr = static_cast<int*>(void_ptr); // 强制转换错误,void 指针不能直接转为有符号类型指针
+  // 2.强制类型转换错误
+  void* void_ptr = nullptr;
+  int* int_ptr = static_cast<int*>(
+      void_ptr);  // 强制转换错误,void 指针不能直接转为有符号类型指针
 
-    //3.转换类型后最好判断一下是否转换成功,指针是否为空
+  // 3.转换类型后最好判断一下是否转换成功,指针是否为空
 
+  /**********逻辑错误**********/
+  // 1.循环无退出条件(死循环)
+  for (int i = 0;; i++) {
+    // 循环体
+  }
+  // 2.数组越界
+  int array[10];
+  array[10] = 0;  // 越界访问容器元素
+  std::vector<int> vec(5);
+  vec[10] = 0;  // 越界访问容器元素
 
-    /**********逻辑错误**********/
-    // 1.循环无退出条件(死循环)
-    for (int i = 0; ; i++) {
-        // 循环体
-    }
-    //2.数组越界
-    int array[10];
-    array[10] = 0;// 越界访问容器元素
-    std::vector<int> vec(5);
-    vec[10] = 0; // 越界访问容器元素
+  // 3.条件判断中的逻辑运算符误用(= 代替 ==)
+  int a = 5, b = 10;
+  if (a = b) {  // 误用 = 代替 ==,此处逻辑短路,a 被赋值为 b 的值,条件为真
+                // 执行代码块
+  }
 
-    //3.条件判断中的逻辑运算符误用(= 代替 ==)
-    int a = 5, b = 10;
-    if (a = b) { // 误用 = 代替 ==,此处逻辑短路,a 被赋值为 b 的值,条件为真
-        // 执行代码块
-    }
+  // 4.未初始化变量的使用
+  int uninitialized;
+  if (uninitialized > 0) {  // 使用未初始化变量,可能导致未定义行为
+                            // 执行代码块
+  }
 
-    //4.未初始化变量的使用
-    int uninitialized;
-    if (uninitialized > 0) { // 使用未初始化变量,可能导致未定义行为
-        // 执行代码块
-    }
+  /**********内存管理错误**********/
+  // 1.引用空指针
+  int* ptr = new int[5];
+  delete[] ptr;
+  ptr[0] = 10;  // 指针已悬空,仍尝试访问
 
-    /**********内存管理错误**********/
-    //1.引用空指针
-    int* ptr = new int[5];
-    delete[] ptr;
-    ptr[0] = 10; // 指针已悬空,仍尝试访问
+  // 2.内存泄露
+  int* pt = new int[10];
+  // 没有 delete[] pt
 
-    //2.内存泄露
-    int* pt = new int[10];
-    // 没有 delete[] pt
-
-    /**********其他错误**********/
-    //未使用的变量
-    int unused = 0;
+  /**********其他错误**********/
+  //未使用的变量
+  int unused = 0;
 }
 
-MainWindow::~MainWindow()
-{
-    delete ui;
-}
-
+MainWindow::~MainWindow() { delete ui; }

--
Gitblit v1.9.1