随笔分类 -  C++学习

摘要:其实在学习的时候,一直没有搞懂为什么要用虚函数,为什么需要传递基类的引用或者指针,要用谁的时候写谁不就好了。其实这时候我的思维还局限在面向过程编程,不是面向对象编程。现在搞明白了,因为多态,利用继承的思想,减少代码复用。我们来看下面的例子。 #include<iostream> using name 阅读全文
posted @ 2024-08-25 12:59 Q星星 阅读(12) 评论(0) 推荐(0)
摘要:当我们学习类的时候,有private、public、构造函数和析构函数等等,帮助我们应对不同的需求,以此来应对不同的设计问题。 那么会存在以下一种情况,我们模拟一个国家政体,一个国家只能有一个总统。我们目前能创建多个对象的方法有,1.通过复制对象,2.实例化时创建多个对象,对于第一种我们可以将默认构 阅读全文
posted @ 2024-08-14 13:20 Q星星 阅读(8) 评论(0) 推荐(0)
摘要:赋值运算符 = 用于将一个值赋给一个变量。对于自定义类型,如类和结构体,你可以重载赋值运算符以定义如何将一个对象的值赋给另一个对象。 默认赋值运算符 对于类类型,默认的赋值运算符会执行成员逐一赋值(member-wise copy)。这意味着对于两个对象a和b,表达式a = b;将每个成员从b复制到 阅读全文
posted @ 2024-08-14 12:40 Q星星 阅读(124) 评论(0) 推荐(0)
摘要:1.静态成员变量: 当static关键字用于类的成员变量时,意味着这个变量是类的所有实例共享的。无论类实例有多少个,静态成员变量只有一个副本。静态成员变量经常用于存储类的公共数据,如配置选项或计数器。 class MyClass { public: static int count; // 静态成员 阅读全文
posted @ 2024-08-14 12:20 Q星星 阅读(27) 评论(0) 推荐(0)
摘要:在C++编程中,对象的拷贝是一项常见的操作。深拷贝和浅拷贝是两种常用的拷贝方式,对于理解对象拷贝的内部机制和避免潜在的问题至关重要。本文将深入解析C++中的深拷贝和浅拷贝的概念、原理以及使用场景,帮助读者更好地掌握和运用这两种拷贝方式。 浅拷贝(Shallow Copy)是指在拷贝对象时,只是复制了 阅读全文
posted @ 2024-08-13 12:51 Q星星 阅读(155) 评论(0) 推荐(0)
摘要:缓冲区溢出(Buffer Overflow)是一种常见的安全漏洞,发生在当程序尝试向一个固定长度的缓冲区写入过多数据时。这可能会导致超出缓冲区分配的内存范围,覆盖相邻内存区域的数据,从而可能引起程序崩溃或安全漏洞。 举个例子: #include <cstring> #include <iostrea 阅读全文
posted @ 2024-08-12 13:45 Q星星 阅读(178) 评论(0) 推荐(0)
摘要:在C++中,对象的创建可以在两种不同的内存区域进行:堆(heap)和栈(stack)。这两种内存区域在管理方式、生命周期、性能和使用场景上有所不同。以下是堆和栈上对象创建的主要区别: 栈上对象创建: 自动内存管理:栈上的对象在创建时自动分配内存,在离开作用域时自动销毁,无需手动管理内存。 生命周期: 阅读全文
posted @ 2024-08-12 09:55 Q星星 阅读(92) 评论(0) 推荐(0)
摘要:1.引用变量是一个别名,也就是说,是已经存在的某个变量另外一个名字。声明引用时,需要将其初始化为一个变量。引用只是访问数据的方式。 2.引用的格式: 变量类型 定义的变量名 = 变量; 变量类型 &引用变量名 = 定义的变量名; 3.引用的特点:①一个变量可取多个别名。②引用必须初始化,只有别名是不 阅读全文
posted @ 2024-08-02 13:21 Q星星 阅读(73) 评论(0) 推荐(0)
摘要:const指针 基础:const是constant的缩写,意思是不变的。也就是说const修饰的变量,是不能被改变的。 指针定义 int *p,那么我们来看一下 const加入int *p有三个地方可以加,分别是const int *p,int const *p,int *const p。 1.co 阅读全文
posted @ 2024-07-31 10:35 Q星星 阅读(147) 评论(0) 推荐(0)
摘要:1.遍历数组元素 多维数组,利用数组指针。 #include<iostream> #include <stdio.h> using namespace std; int main() { int arr[3][5] = { {1,2,3,4,5},{6,7,8,9,10},{11,12,13,14, 阅读全文
posted @ 2024-03-19 13:30 Q星星 阅读(37) 评论(0) 推荐(0)
摘要:1.数组指针:当数组指针指向一个一维数组时,()优先级高,说明p是指针,指向一个整型的一维数组。这个一维数组的长度是n,也可以说p的步长为n。当p+1时,p指针会跨过n个整型数据的长度。 2.指针数组:当定义一个一维数组时,系统会在内存中为改数组分配一个储存空间,其数组的变量名就是数组的首地址。若定 阅读全文
posted @ 2024-03-18 09:27 Q星星 阅读(33) 评论(0) 推荐(0)
摘要:概念:迭代器是一种检查容器内元素并遍历元素的数据类型,通常用于对C++中各种容器内元素的访问,但不同的容器有不同的迭代器,初学者可以将迭代器理解为指针。 1.使用迭代器 使用begin和end,begin成员负责返回第一个元素(或者第一个字符)的迭代器。end成员返回指向容器“尾元素的下一个位置”的 阅读全文
posted @ 2024-03-14 17:22 Q星星 阅读(43) 评论(0) 推荐(0)
摘要:1.初始化vector vector<int> v1; 默认初始化 vector<int> v2(10); 10个int类型的元素,初始化值为-1 vector<string> v3{"a","bb","ccc"};列表初始化,包括三个元素 2.向vector添加元素 #include<iostre 阅读全文
posted @ 2024-03-13 18:46 Q星星 阅读(85) 评论(0) 推荐(0)
摘要:标准库类型string 1.定义和初始化 初始化:拷贝初始化和直接初始化 2.string对象上的操作 3.读写string 使用getline #include<iostream> #include<string> using namespace std; int main() { string 阅读全文
posted @ 2024-03-13 06:17 Q星星 阅读(21) 评论(0) 推荐(0)
摘要:主要复合类型:引用和指针 1.引用 允许在一条语句中定义多个引用,其中每个引用标识符都必须以&开头。 #include<iostream> using namespace std; int main() { int b; int &a = b; b = 6; cout << "a:" << a << 阅读全文
posted @ 2024-03-07 10:03 Q星星 阅读(21) 评论(0) 推荐(0)