2.3构造函数与析构函数
构造函数与析构函数:通俗版解释
1. 构造函数:对象的“出生证明”
作用:在对象创建时,自动初始化数据成员。
特点:
名字与类名相同(如Dog())。
无返回值(连void都没有)。
可以重载(多个构造函数,按参数不同区分)。
创建对象时,构造函数会被自动调用!!
例子:
1234567891011class Dog {private: string name; int age;public: Dog() { name = "无名"; age = 0; } // 默认构造函数 Dog(string n, int a) { name = n; age = a; } // 带参数的构造函数};**Dog d1; // 调用默认构造函数:name="无名", age=0**Dog d2("旺财", 3); // 调用带参数的构造函数:name="旺财", a...
2-2this指针
“this指针”通俗版解释
1. 为什么需要this指针?想象你有一个班级,每个学生(对象)都有自己的姓名和成绩(数据),但全班共用同一本教材(成员函数)。
老师提问时,教材里的答案要对应到具体学生。比如问“你的成绩是多少?”,教材需要知道当前问的是哪个学生。
this指针就像老师手里的名单,告诉教材:“现在操作的是张三,下一个是李四”。
代码例子:
123456789101112class Student {private: int score;public: void setScore(int s) { score = s; // 这里的score属于当前调用setScore的对象 }};Student zhangsan, lisi;zhangsan.setScore(90); // this指向zhangsanlisi.setScore(85); // this指向lisi
2. this指针是什么?
隐藏的指针:每个成员函数(非静态)都有一个隐藏参数this,指向调...
对象与类:通俗版解释
1. 类和对象是什么?
类:就像一张设计图。比如“汽车设计图”规定了一辆车必须有轮子、发动机、方向盘,还能加速和刹车。
对象:按照设计图造出来的具体东西。比如根据“汽车设计图”造出一辆红色跑车,或者一辆蓝色卡车。
一个类可以创建出多个对象
例子:
123456789101112class Dog { // 类:狗的“设计图”,通常开头字母大写public: string name; // 属性:名字 void bark() { // 方法:叫 cout << "汪汪!"; }};Dog myDog; // 对象:按设计图造出一只狗,叫myDogmyDog.name = "旺财"; // 给狗取名myDog.bark(); // 让狗叫:输出“汪汪!”
2. 类的成员:数据和函数
数据成员:描述对象的属性。比如狗的年龄、颜色。
成员函数:描述对象能做什么。比如狗会叫、会跑。
关键点:
数据和...
std::list简介:双向链表,大小可动态调整,用于频繁插入或删除。支持双向遍历。
注:
list同vector极其类似!!!!!
12345678910111213141516171819202122232425262728293031#include <iostream>#include <list>int main() { // 初始化 std::list<int> list = {1, 2, 3, 4}; // 添加元素 list.push_back(5); // 尾部插入 list.push_front(0); // 头部插入 // 删除元素 list.pop_back(); // 删除尾部元素 list.pop_front(); // 删除头部元素 // 遍历元素 std::cout << "Elements: "; for (int i : list) { std::cout...
std::vector简介:是一个动态数组,提供高效的随机访问和动态扩容功能。(内部使用连续的内存块存储元素,通过索引快速访问元素的时间复杂度为O(1))(会自动管理内存,当元素数量超过当前容量时,会自动分配更大的内存块并复制元素)(支持迭代器,可方便地遍历容器中的元素)(泛型编程,是一个模板类,可存储任意类型的元素,如int ,double, std::string 等)
1234567891011121314151617181920212223242526272829303132#include <iostream>#include <vector>int main() { // 初始化 std::vector<int> vec = {1, 2, 3}; // 添加元素 vec.push_back(4); vec.insert(vec.begin() + 2, 10); // 删除元素 vec.pop_back(); //删除尾部元素 vec.erase(vec....
首先加入调试信息:g++ -g -o pp pp.cpp
启动gdb
1)在文件内部的终端内输入 gdb
2)或者在win+R+回车后找到文件所在目录 (或者在Git Bash中)并输入 gdb ./文件名
设置断点
1)在某一行设置断点: (gdb) break 15 在第 15 行设置断点
2)在函数入口设置断点: (gdb) break my_function 在函数 my_function 的入口设置断点
在gdb中启动程序:
1)代码无参数: (gdb) run
2)代码有参数: (gdb) run avg1 avg2…(只需要在run后面增加参数的值即可)
执行代码
1)(gdb)next: 单步执行,跳过函数调用
2)(gdb)step: 单步执行,进入函数
3)(gdb)continue: 继续执行直到下一个断点
查看变量的值:(gdb)print <变量名>
查看当前调用栈:(gdb)backtrace 或 (gdb)bt
修改变量的值:(gdb)set <variable_...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment