C++排雷:29.构造函数的调用规则、构造与析构总结

构造函数的调用规则

1)当类中没有定义任何一个构造函数时,c++编译器会提供默认无参构造函数和默认拷贝构造函数
2)当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数
3) 当类中定义了任意的非拷贝构造函数(即:当类中提供了有参构造函数或无参构造函数),c++编译器不会提供默认无参构造函数
4 )默认拷贝构造函数成员变量简单赋值
总结:只要你写了构造函数,那么你必须用。

构造析构总结 :

1)构造函数是C++中用于初始化对象状态的特殊函数
2)构造函数在对象创建时自动被调用
3)构造函数和普通成员函数都遵循重载规则
4)拷贝构造函数是对象正确初始化的重要保证
5)必要的时候,必须手工编写拷贝构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我明白了。这个排雷的程序可以用 Python 的 tkinter 模块来制作,具体的步骤如下: 1. 导入 tkinter 模块。 ```python import tkinter as tk ``` 2. 创建一个窗口,并设置窗口的标题和大小。 ```python root = tk.Tk() root.title("Minesweeper") root.geometry("500x500") ``` 3. 在窗口中添加一个 Label,用于显示游戏的标题。 ```python title_label = tk.Label(root, text="Minesweeper", font=("Arial", 24)) title_label.pack() ``` 4. 创建一个 10*10 的棋盘,并随机生成 25 个雷。可以用一个二维数组来表示棋盘,每个元素可以是一个 Button,用于接收玩家的左键和右键点击事件。 ```python board = [] for i in range(10): row = [] for j in range(10): button = tk.Button(root, text="", width=3, height=2) button.grid(row=i+1, column=j+1) button.bind("<Button-1>", left_click) button.bind("<Button-3>", right_click) row.append(button) board.append(row) # 随机生成 25 个雷 mines = set() while len(mines) < 25: i = random.randint(0, 9) j = random.randint(0, 9) if (i, j) not in mines: mines.add((i, j)) ``` 5. 定义左键点击和右键点击的回调函数。左键点击需要检查当前点击的位置是否有雷,如果有雷则游戏结束,否则需要显示当前位置周围的雷数。右键点击需要标记当前位置是否为雷。 ```python def left_click(event): button = event.widget i, j = get_index(button) if (i, j) in mines: button.config(text="X", bg="red") game_over() else: count = count_mines(i, j) button.config(text=count, bg="white") def right_click(event): button = event.widget i, j = get_index(button) if button.cget("text") == "": button.config(text="*", fg="red") elif button.cget("text") == "*": button.config(text="?", fg="blue") else: button.config(text="", fg="black") ``` 6. 实现计算当前位置周围的雷数的函数。 ```python def count_mines(i, j): count = 0 for a, b in [(i-1, j-1), (i-1, j), (i-1, j+1), (i, j-1), (i, j+1), (i+1, j-1), (i+1, j), (i+1, j+1)]: if 0 <= a < 10 and 0 <= b < 10 and (a, b) in mines: count += 1 return count ``` 7. 实现游戏结束的函数。 ```python def game_over(): for i in range(10): for j in range(10): if (i, j) in mines: board[i][j].config(text="*", bg="white") else: count = count_mines(i, j) board[i][j].config(text=count, bg="white") ``` 8. 最后启动游戏。 ```python root.mainloop() ``` 完整代码如下:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值