![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 83
C/C++
摇花手当雨伞
重铸双非荣光,吾辈义不容辞
展开
-
C/C++注意事项一
C++注意事项1.无参构造函数若要调用自己的无参构造函数,则构造时不能带括号。#include <stdio.h>#include <vector>#include <list>#include <iostream>#include <Windows.h>using namespace std;class DEMO {public: DEMO() { cout << "调用无参构造函数" <<原创 2022-03-03 19:34:43 · 543 阅读 · 0 评论 -
static与const
static与const1.static数据成员在我们使用C++定义类时,如果我们需要一个所有对象都使用而且相关联的数据成员时。我们就可以定义一个static数据成员。被定义为static的数据成员在全局数据区分配内存,这使得它在某一对象造成的变化将会保留。可以看成它是属于整个类的,而不是单属于某个对象。它的声明方式是在类内用关键字static声明,再在类定义下初始化。#include <iostream>#include <Windows.h>class Human {原创 2020-05-16 18:46:58 · 122 阅读 · 0 评论 -
构造函数
在C++类中创建对象,并在主函数中使用时。对象中的内部成员都需进行初始化。C++中承担这一功能的是构造函数。一、合成的默认构造函数构造函数有很多种,其中最简单的就是合成的默认构造函数。它会在编译器检测到不存在其它构造函数时自动生成并对对象的内部成员进行初始化。其实,它的作用范围及其受限。只有在创建类时给各成员变量赋值后才能使用class Human {public:Human();void work();void description();string getName();int getAge();in原创 2020-05-08 19:03:03 · 123 阅读 · 0 评论 -
拷贝构造函数与赋值构造函数
拷贝构造函数与赋值构造函数在C++中,如果要创建一个新的类,并用已有的类来给它附初值。就要用到拷贝构造函数,拷贝构造函数又分为两种。1.合成的拷贝构造函数在你没有定义自己的拷贝构造函数而又调用了拷贝构造函数时,编译器会调用合成的拷贝构造函数来进行赋值。合成的拷贝构造函数进行的拷贝叫做浅拷贝(又叫位拷贝)。在大多数情况下,使用合成的拷贝构造函数也不会出错。但要是你的类的数据成员中又指针或分配了内存。那合成的拷贝构造函数就不适用这种情况。如下错误代码:#include <iostream>原创 2020-05-10 11:22:00 · 1318 阅读 · 1 评论 -
C++拷贝构造函数的调用时机
C++拷贝构造函数的调用时机1.显示的调用2.类作为函数形参时调用3.返回值为类类型时4.数组初始化时1.显示的调用2.类作为函数形参时调用3.返回值为类类型时4.数组初始化时原创 2021-12-18 20:39:21 · 751 阅读 · 0 评论 -
C++智能指针总结二——unique_ptr
C++智能指针总结二1.往期回顾2.auto_ptr的缺陷1.缺陷一2.缺陷二3.unique_ptr1."更安全的赋值"2.支持创建动态数组3.补充API1.往期回顾2.auto_ptr的缺陷1.缺陷一先来看下面的代码:#include <Windows.h>#include <iostream>#include <string>#include <vector>#include <memory>using na原创 2021-12-01 21:01:30 · 1562 阅读 · 0 评论 -
C++模板函数
模板函数与类模板1.模板函数1.模板函数的声明与定义2.模板函数的调用显式类型调用自动推导3.模板函数的底层实现1.模板函数1.模板函数的声明与定义C++提供了模板(template)编程的概念。所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。这种通用的方式称为模板。模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。简单来说,就是我们提供一个抽象的函数,并不具体指定其中数据的类型,而是某个虚拟类型代替。只提供基本的功原创 2021-12-06 10:10:14 · 21232 阅读 · 3 评论 -
模板类实现vector容器
模板类实现vector容器1.Vector.h2.Vector.cpp3.main.cpp1.Vector.h#pragma once#include <iostream>#include <Windows.h>#include <stdio.h>#include <stdlib.h>using namespace std;template <typename T>class Vector {public:原创 2021-12-06 10:10:35 · 1040 阅读 · 0 评论 -
C++子类对象的内存分布
C++子类对象的内存分布原创 2021-12-27 19:10:55 · 517 阅读 · 0 评论 -
C++智能指针总结一——auto_ptr
C++智能指针总结1.前言2.为什么要使用智能指针2.auto_ptr1.API用法2.使用建议1.前言本文旨在旋风式的介绍一下智能指针的基本用法,然后一定程度上的解析一下它们的底层原理。2.为什么要使用智能指针其实智能指针就是为了解决动态分配的内存得不到及时的释放的问题而出现的一种机制。我们知道在C与C++语言中,是可以使用指针来操纵内存的。使用malloc或new可以在堆上分配一块内存。但使用malloc或new分配的内存是不会被操作系统主动回收的,需要程序员自己手动释放。如果程序员分配了太多原创 2021-12-01 20:59:35 · 1074 阅读 · 0 评论 -
C++类模板
C++类模板1.上期内容2.类模板1.在类内部定义与声明2.在类外部定义成员函数3.类模板的继承1.上期内容2.类模板类模板是为了减少重复工作量而出现的一种进制,当一个类的功能类似只是类型相同时,一个通用的类模板可以根据使用者的需要而生成具体类型的类,从而减少功能重复的代码。C++在STL中大量使用了类模板,很多迭代器与算法的实现都离不开泛型编程与类模板的支持。所以掌握类模板的基本使用是很重要的。1.在类内部定义与声明#include <iostream>#include <原创 2021-12-06 10:09:50 · 5050 阅读 · 0 评论 -
C++智能指针总结三——shared_ptr与weak_ptr
C++智能指针总结三——shared_ptr 1.往期回顾2.为什么要使用shared_ptr3.shared_ptr的使用1.shared_ptr原理2.shared_ptr的使用1.往期回顾2.为什么要使用shared_ptr这是因为,无论是auto_ptr还是unique_ptr都是排它型的,即只允许一个智能指针对象引用控制一块动态内存。那如果我们要使用多个指向同一块动态内存的指针时,显然auto_ptr与unique_ptr都不能做到。因此,为了实现多个智能指针引用同一块动态内存的原创 2021-12-01 21:01:50 · 1970 阅读 · 0 评论