1. 再谈构造函数在面向对象编程中,构造函数 是一种特殊的成员函数,它在对象创建时自动调用,负责初始化对象的成员变量(创建对象时赋初值),确保对象在创建时有一个有效的状态。接下来,我们将详细讲解关于构造函数的几个重要概念。
1.1 构造函数体赋值当我们创建一个对象时,构造函数会被自动调用,用来给对象的各个成员变量提供一个初始值。例如:
123456789class MyClass{public: int a; MyClass() { a = 10; // 这里是构造函数体中的赋值操作 }};
在这个例子中,构造函数的作用是将 a 赋值为 10。然而,这里要注意,构造函数体中的赋值操作和初始化是有区别的。构造函数体中对成员变量的赋值只能算是给成员变量“赋初值”,而不是“初始化”。因为初始化是指给成员变量设置一个初始值,而且初始化只能发生一次,而赋值操作可以发生多次。
再例如:
12345678910111213class A{ int _x;public: A(int x) ...
1. 类的 6 个默认成员函数默认成员函数的含义: 即使一个类什么都不写,编译器也会默认生成 4 以下个成员函数:
默认构造函数(初始化对象时调用)。
拷贝构造函数(用已有对象创建新对象时调用)。
析构函数(对象生命周期结束时调用)。
赋值运算符重载(用 = 赋值时调用)。
可以直接使用的操作符:
取地址操作符 &。
常量取地址操作符 const &。
代码示例:
12345678910111213141516#include <iostream>using namespace std;class Example{ // 空类,未显式定义任何成员函数};int main(){ Example e1; // 调用默认构造函数 Example e2 = e1; // 调用拷贝构造函数 Example* ePtr = &e1; // 调用取地址操作符 return 0; // 在程序结束时,e1 和 e2 调用析构函数}
传道解惑:Q1:e1——类 ...
一、本节目标
面向过程和面向对象初步认识
类的引入
类的定义
类的访问限定符及封装
类的作用域
类的实例化
类的对象大小的计算
类成员函数的 this 指针
二、面向过程和面向对象初步认识(过程与面向对象编程)面向过程编程(ProceduralProgramming):
关注“过程”或“步骤”。
将问题分解为函数,每个函数执行一个特定的任务。
主要依赖函数调用,常见于 C 语言。
12345678910111213#include <stdio.h>// 面向过程编程: 通过函数处理数据void process(int data){ printf("Processing data: %d\n", data);}int main() { int data = 42; process(data); return 0;}
面向对象编程(Object-OrientedProgramming):
关注“对象”,将数据与操作数据的方法结合。
通过对象之间的交互解决问题,常见于 C++。
12 ...
Obsidian
未读在 Obsidian 最新版中,正反向链接、标签和属性是核心功能,用于构建知识网络、分类管理及添加
一、正反向链接功能
正向链接(出链):当前笔记中主动引用其他笔记或段落。
反向链接(入链):其他笔记引用当前笔记时自动生成的反向关联。
作用:形成双向知识网络,通过链接关系追溯相关内容。
使用方法
基础语法:
1234[[目标笔记名]] # 链接到整篇笔记[[目标笔记名#标题]] # 链接到特定标题[[目标笔记名#^段落ID]] # 链接到具体段落(块)[[目标笔记名|别名]] # 使用别名显示链接
操作提示:
输入 [[ 后,Obsidian 会自动提示可链接的笔记。
支持嵌入内容(如图片、视频):![[图片名.png]]。
段落块 ID 可通过光标悬停段落时点击「复制块链接」获取。
查看反向链接: 在右侧面板或笔记底部查看「反向链接」,显示所有引用当前笔记的位置。
二、标签功能
分类管理:通过 #标签 对笔记进行主题或属性标记。
嵌套标签:支持层级结构(如 # ...