自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 ||运算和&&运算

||运算和&&运算

2022-08-06 11:46:15 272 1

原创 vector的构造函数

vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为tvector(const vector&):复制构造函数vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中,注意最后面的end其实并不包括,此函数也可以认为是vector(begin,...

2021-04-26 02:38:35 4552

转载 继承方式

C++继承方式继承定义继承就是不修改原有的类,直接利用原来的类的属性和方法并进行扩展。原来的类称为基类,继承的类称为派生类,他们的关系就像父子一样,所以又叫父类和子类。一般格式如下:class 派生类名 : 继承类型 基类名三种继承方式继承类型有三种,共有继承(public),私有继承(private)和保护继承(protected)。共有继承的特点是基类成员在派生类中都保持原来的状态私有继承的特点是基类中所有成员在派生类中都变为私有成员保护继承:基类中的public变为protect

2021-04-26 01:38:51 121

原创 构造函数与析构函数

类内有两种特殊的函数(当然也要6种的说法,其中5种是构造函数),称为构造函数和析构函数,下面写了两个类来了解一下普通构造函数与析构函数。代码地址:http://cpp.sh/27lkt#include <iostream>using namespace std;class A {public: A(int _m) : m(_m) { cout << "general construct A" << endl; } ~A() { cout &l

2021-04-26 00:25:28 364

原创 螺旋矩阵

螺旋矩阵给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。这是某个朋友碰到过的笔试题,在leetcode上也能看到https://leetcode-cn.com/problems/spiral-matrix-ii/#include <iostream>#include <string>#include<iomanip>using namespace std;enum Di

2021-04-22 11:07:44 156

原创 构造函数、析构函数与虚函数

构造函数不能为虚函数。虚函数的实现是通过虚表(vtable)管理被重写了的函数,通过虚表指针(vptr)指向虚表。虚表指针是与对象相联系的,只有创建了对象,才产生虚表指针。虚表指针位于对象的第一个指针长度的位置,它会根据实际情况指向对象类型对应的虚表。构造函数调用结束之前,对象还未产生,此时的对象是不完整的,虚表指针未必生成,多态机制无法使用,因此不能在构造函数结束之前调用虚函数。基类的析构函数要写成虚函数基类的析构函数不要写成虚函数时,使用父类指针delete,会调用不到基类的析构函数,基类内存

2021-04-13 13:08:24 211

原创 虚表指针

当一个类A实现了多态的时候,与不使用多态机制的写法相比会多出一个sizeof(void*)的长度,多出的这个长度就是虚表指针,在对象中,虚表指针位于对象地址的起始位置。class Base {public: int a; int b; virtual void func() {}};class Dred : public Base {public: int a; int b; void func() {}};int main() {

2021-04-13 12:52:52 356

原创 C++内存中的字符指针与数组

这里我们来看一下字符串的存储字符串str1,str2,str3,str4,str7;整数:startAddress, n1数组:str5,str6,以及p2原程序如下int main(){ printf("Hello world!\n"); int startAddr = 0x12345678; int nn1 = 0x12005600; int nn2 = 0x00120056; char* str1 = "hello"; //str1[2]

2021-04-13 03:23:53 307

原创 C++数据区

C++经典的内存模型分区划分为代码区,数据区,堆区,栈区;也有更细一些的说法:命令行,代码区,全局静态区,BBS段,常量区,堆区,栈区。下面我在windows下,编译器为codeblocks写了下列代码来认识一下。为了保证显示数据存放的连续性,同种数据设置了多个数据并且有乱序声明。int a1; //a : 全局未初始化变量int a2;int b1 = 4; //b: 全局已初始化变量int b2 = 5;static int c1; //c: 全局未初始化静态变

2021-04-13 03:09:17 248

原创 i++与++i

前置的++与后置的++是有区别的,主要体现在汇编代码上下面是一段简单的代码 int n; int m = 1; n = m++; n = ++m;它的汇编代码为0x004015B7 movl $0x1,-0x1c(%ebp)0x004015BE mov -0x1c(%ebp),%eax0x004015C1 mov %eax,-0x20(%ebp)0x004015C4 incl -0x1c(%ebp)0x004015C7 incl -

2021-04-12 02:37:54 82

原创 对象作为参数传递(1)

类的对象作为参数进行值传递时将会调用构造函数看下列代码#include <iostream>using namespace std;class A{public: A() {cout << "general construct A" << endl;} A(A& a) {cout << "copy construct A" << endl;} ~A() {cout << "destruct

2021-04-12 01:59:38 96

原创 对象作为参数传递(2)

当子类重写父类的方法时,参数为类时,通过值传递和地址传递将会出现不一样的结果。#include <iostream>using namespace std;class A{public: A() {} ~A() {} virtual void fun1() {cout << "A fun 1 call" << endl;} void fun2() {cout << "A fun 2 call" << e

2021-04-12 01:48:32 267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除