自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++--多重继承及虚基类

一个派生类只有一个直接基类的情况称为单一继承。

2025-12-06 13:30:21 354

原创 C++--继承与静态成员和友元

继承与静态成员,静态成员只有一个,所有对象共享(包括基类对象和派生类对象)若在基类中定义基类中的静态成员只有一份,为所有派生类成员共享若不想共享:把基类型里的注释掉,在各自的派生类中定义Num,记录各自派生对象的个数。

2025-12-04 17:51:52 187

原创 C++--公有继承和私有继承的区别

组合:使某个类的对象成为另一个类的数据成员,从而实现将一个类构筑在另一个类之上,这一过程称为组合/分层;

2025-12-04 17:51:35 295

原创 C++--继承面试题

static1.类静态变量的初始化发生在(也叫 “类加载阶段”),早于main函数执行。简单说:程序运行的顺序是「加载类 → 初始化类静态变量 → 执行main函数」,而不是先跑main再初始化。2.mainmain这就是 “饿汉式”(提前创建)和 “懒汉式”(延迟创建)的核心区别 —— 本质是 “类静态变量” 和 “静态局部变量” 的初始化时机不同。二.单例模式的回顾即外部环境创建该类的对象1.设计构造函数是私有或者保护->外部函数不能自己创建。

2025-12-03 21:32:10 361

原创 C++--继承关系中构造函数和析构函数

先构建基类对象因为先有父再有子,之后构建s_id 因为按照自己设计顺序进行,在构建Trans2.析构顺序先析构成员对象在析构成员对象,与构建对象是互逆的先构建基类对象,在是自己的s_id,再是Trans,并且Person和Trans之间差了8个字节,最后Student的地址也指向的是第一个首地址,析构与构建相反着来。

2025-12-03 19:16:11 994

原创 C++--继承

1.继承机制:是类型层次结构设计中实现代码的复用重要手段2.派生:保持原有类特性的基础上进行扩展,增加新属性和新方法,从而产生新的类型再面向对象程序设计中,继承和派生是构造出新类型的过程,呈现类型设计的层次结构,体现了程序设计人员对现实世界由简单到复杂的认识过程。3.C++通过派生的机制来支持继承,被继承的类称为基类或超类,新产生的类为派生类或子类。基类和派生类的集合称作类继承层次结构4.总结:派生反映了事物之间的联系,事务的共性与个性之间的关系。

2025-12-02 21:03:19 970

原创 C++--链栈的嵌套设计

1.其中MyStack的大小为1,占位符,因为data和next都属于StackNode里,因为是public定义2.在C++中可以用class设计一个类型也可以用struct设计一个类型但两者的区别是:1.class默认可访问属性是私有struct 是公有2.class设计类型时 认为是对象,有属性有方法,struct 里面只有数据没有方法。

2025-12-01 09:38:43 195

原创 C++--类的静态方法

一个常规的成员函数声明描述了三件在逻辑上互不相同的事情:1.该函数能访问类产生对象的私用部分2.该函数位于类的作用域之中3.该函数必须经由一个对象去激活(有一个this指针)①将一个函数声明为友元,只有第一个性质②将一个函数声明为static可以使它具有第一种和第二种性质。

2025-12-01 09:38:31 294

原创 C++--对象与对象的关系

类里面构造对象的顺序和自己设计的顺序有关,保持一致进入线的构造函数之前先进行点的初始化线的析构函数析构之后,再析构俩个点的析构2.不写拷贝构造,线的缺省拷贝构造仍然会去调用成员函数的拷贝构造虽然没有线的拷贝构造,但系统的缺省拷贝构造仍然会调动点的拷贝构造因为构造函数是以引用返回而不是值类型返回,所以少了两个临时变量的拷贝和析构前两个拷贝函数,是因为a,b需要拷贝给拷贝函数的a,b。接着_start(a),_end(b)也要调动拷贝构造。结束后构造函数结束,临时对象的生存期也结束,析构。

2025-11-29 12:13:28 200

原创 C++--单例模式

且我们的静态函数可以调动构造函数,因为静态函数的作用域在类内。而在C11中架构移动拷贝构造,移动赋值8个缺省函数。,获取类对象a,把类中的对象a以引用的方式返回。在C98中,编译器提供了6个缺省函数。//单例模式 类型只能产生一个对象。,防止外部环境能够直接创建对象。(给出函数的声明,不要有形参)防止编译器给出缺省的构造和赋值。拷贝构造函数和赋值函数删掉。在类里定义一个静态的对象。三.如何构造单例模式。

2025-11-29 12:12:57 140

原创 C++--MyString函数的编写

【代码】C++--MyString函数的编写。

2025-11-27 21:11:42 209

原创 C++--类的静态数据成员

1.由关键字static修饰类体中的成员,成为类静态成员。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存在于公用内存中。静态数据成员被当作该类类型的全局对象对。

2025-11-27 21:11:29 400

原创 C++--友元函数

友元机制允许一个类授权其他函数访问这个类所产生对象的非公有成员friend作为外部函数,没有this指针,const不能去修饰它4。

2025-11-26 14:21:09 92

原创 C++--深赋值浅赋值及运算符重载函数的总结

1.函数名必须为operator加一个合法的运算符,再调用函数时,将右操作数作为函数的实参。2.当用类的成员实现运算符的重载时,运算符重载函数的参数(双目运算符时)为一个或(单目运算符)没有。运算符的左操作数一定是对象,因为重载的运算符是该对象的成员函数,而右操作数是该函数的参数。3.单目运算符++和--前置++:返回类型 类名::operator++(){}后置++:返回类型 类名::operator++(int){}

2025-11-26 14:20:47 228

原创 C++--运算符重载

1.为了减少拷贝构造对象的个数,在参数列表中使用引用&类型。对于传递进来的对象不进行修改,加const ,即参数列表中(const Complex& com)2.返回类型:返回的是局部对象,以值的形式返回返回的是传递进来的对象,以引用&形式返回。这样对方可以以引用形式接收并且可以修改3.重载的函数 +=需要改变传进来的值所以不能加const。

2025-11-25 19:11:57 125

原创 C++--深拷贝浅拷贝

因为代码中data指向的是堆空间,析构时要把堆空间释放掉,如果采取浅拷贝,两个对象共用一块堆区空间,某个对象生存期到了会析构,另外的对象就会死掉,,需要写拷贝构造函数。或指向系统内核对象时,需要写。三.什么时候要写拷贝构造函数。

2025-11-25 19:11:39 110

原创 C++--拷贝构造函数

同一个类的对象在内存中有完全相同的结构,如果作为一个整体进行复制或称拷贝是完全可行的。这个拷贝过程只需要拷贝数据成员,而函数成员是公用的(只有一份拷贝)。在建立对象时可用同一类的另一个对象来初始化该对象的存储空间1.拷贝构造函数的参数必须是引用类型(通常是const 类名&①防止无限递归②加const不允许修改2.拷贝构造函数是特殊的构造函数,也可以进行初始化3.按位拷贝4.在类中如果没有显式给出拷贝构造函数时,则C++编译器自动给出一个缺省的拷贝构造函数。

2025-11-24 18:05:32 874

原创 C++--成员方法的设计

3.避免返回 const 对象的非 const 引用。1.必须保证引用指向的对象在函数返回后仍然存在!常对象只能调动常方法,不可以调动普通方法。explicit不允许进行隐式转换。普通对象可以调动普通方法和常方法。初始化列表只能在构造函数中。其他函数不能使用初始化列表。六.int&引用的生命周期。4.引用返回值可作为左值。一.const常方法。②初始化对象中的属性。

2025-11-24 18:05:12 301

原创 C++--析构函数

当定义一个对象时,C++自动调用构造函数建立该对象并进行初始化,那么当一个对象的生命周期结束时,C++也会自动调用一个函数注销该对象并进行善后工作,这个特殊的成员函数即析构函数。

2025-11-22 14:26:32 244

原创 C++--初始化列表和赋值的区别以及默认构造函数

编译器会自动生成默认构造函数,无参函数体为空private:// 就地默认初始化public:// 编译器生成默认构造函数(无参),等价于:Test t;// num=10, str="Hello"(编译器生成的默认构造函数通过隐式初始化列表初始化)

2025-11-22 12:09:06 984

原创 C++--构造函数

1.定义:数据成员多为私有的,要对他们进行初始化,必须用一个公有函数来进行。同时这个函数应该在,且仅在定义对象时自动执行一次,称为构造函数。2.用途:1.创造对象 2.初始化对象中的属性3.类型转换3.用途解释:4.构造函数只能在创建好的空间里构建对象,不能创造空间,空间是由系统构造的,只能申请。比如老师去学校申请教室上课,不可能去盖一间教师出来,只能申请教室,大家来上课4.因为C++中有存储空间,但不一定有对象,所以通过构造函数来创造对象所以 有对象->一定有空间。

2025-11-20 16:54:34 865

原创 C++--this指针

所有类共用一个公共代码区,自己分别都有数据区,那么当c1去访问公共代码里的函数时,函数是如何知道是c1访问而不是c2?

2025-11-20 16:54:13 234

原创 C++--类型设计与实例化对象

四个数据成员被说明成私有,六个函数成员被说明成公有,这就是说如果从外部对四个数据成员进行访问,必须通过这六个公有函数来完成。公有函数集定义了类的接口。若在类体起点无访问说明符,系统默认定义为私有,访问说明符private和protected体现了类具有封装性;①类是一种数据类型,定义是系统不为类分配存储空间,所以不能对类的数据成员进行初始化,要想访问,必须实例化为。①可以在类里声明函数,在类外定义,那么需要1.返回类型相同;③也可以直接在类里进行函数的声明和定义,但此时,会被认为是内联函数。

2025-11-19 16:34:27 201

原创 C++初级--动态内存管理及后续初级知识

②第一个循环是,将数组的每一个值赋值给x,先将0下标给x,输出;在C11中,sizeof(nullptr)与sizeof((void*)0)所占字节数相同,都(4,8);2.malloc申请空间时手动计算大小,new 只需要类型名,自动计算大小。1.new/delete是C++中的运算符,malloc/free是函数。5.malloc申请内存空间失败时,返回NULL,使用时必须判空。auto定义的变量,可以根据初始化的值,在编译时推导出变量名的类型。

2025-11-19 16:34:02 894

原创 C++初级--函数重载及相关知识

在C++中可以为两个或两个以上的函数提供相同的函数名称,只要参数类型不同,或参数类型相同而参数的个数不同,成为函数重载。

2025-11-18 16:07:09 231

原创 C++初级--inline函数及缺省函数

因为当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等,这些工作需要系统时间和空间的开销1.inline是关键字,在函数返回类型前后使用,标识为内联函数。2.内联函数:每一次被用户时,展开(函数的功能: 函数体)3.普通函数调用时则会入栈,而内联函数不入栈,直接在调用的位置展开。二.优点以及注意事项1.inline是一种以空间换时间的做法,省去调用函数额外开销。

2025-11-18 16:06:54 217

原创 C++初级--引用

②如果形参不改变实参的值,直接传值,若用引用相当于传地址,要对内存进行两次访问;引用在定义时就被初始化,之后无法改变(不能是其他实例的引用)即对于指针变量,会使指针变量指向下一个实体的地址,而不是改变所指尸体的内容;对引用变量使用得到的是变量的大小。但引用只有一级,不存在引用的引用,但可以有指针的指针。②const在&右边,修饰引用本身,会忽略const,所以读取和修改都可以。1.指针变量存储的是某个实例(变量或对象)的地址,而引用是某个实例的别名。1.引用必须赋初值,没有空引用及二级引用。

2025-11-15 16:00:29 397

原创 const与指针

①p1为普通指针:通过解引用*p改变指向的变量值;在C中,const以变量为主,定义数组时我们要用,define、enum和字面常量。n的地址赋值给p,改变p的值同时改变n,n再赋值给b,所以结果都为100。遇见n就用5替换掉,虽然在内存中n的值已被修改为100.但在编译中仍不变。③const 修饰的是指针指向的能力,限制“通过指针修改指向内容”所以不可以通过解引用*p2修改值,但p2本事是一个变量可以修改指向。①修饰的是指针本身,一旦初始化就不能修改其指针指向。既不能修改指针指向内容也不能修改指针本身。

2025-11-15 13:32:32 158

空空如也

空空如也

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

TA关注的人

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