c++
文章平均质量分 82
one-莫烦
keep going
展开
-
EssentialC++
第一章 C++编程基础1.1 如何写c++程序#include <iostream> //输入输出库#include <string>int main() //main函数 程序入口{ string user_name; std::cout << "Enter your name" << std::endl; std::cin >> user_name; std::cout << "hell原创 2022-05-07 10:36:46 · 1027 阅读 · 0 评论 -
单例模式的一些问题
几种单例模式单例是一个类的单一实例,类或者结构体只有一个实例,是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。单例特点:1 在任何情况下,单例类永远只有一个实例存在。2 单例需要有能力为整个系统提供这一唯一实例。实现一(单线程使用,多线程不安全)#include <iostream>using namespace std;原创 2022-03-18 16:45:49 · 881 阅读 · 0 评论 -
C++中的智能指针
1 智能指针的基本用法智能指针设计的初衷就是可以帮助我们管理堆上申请的内存,可以理解为开发者只需要申请,而释放交给智能指针。目前 C++11 主要支持的智能指针为以下几种,都定义在 memory 头文件中unique_ptrshared_ptrweak_ptr1.1 unique_ptr先上代码class A{public: void do_something() {}};void test_unique_ptr(bool open){ std::unique转载 2022-03-16 14:40:56 · 537 阅读 · 0 评论 -
c++之多线程中“锁”(mutex)的用法
1. 锁:mutex锁,是生活中应用十分广泛的一种工具。锁的本质属性是为事物提供“访问保护”,例如:大门上的锁,是为了保护房子免于不速之客的到访;自行车的锁,是为了保护自行车只有owner才可以使用;保险柜上的锁,是为了保护里面的合同和金钱等重要东西……在c++等高级编程语言中,锁也是用来提供“访问保护”的,不过被保护的东西不再是房子、自行车、金钱,而是内存中的各种变量。此外,计算机领域对于“锁”有个响亮的名字——mutex(互斥量),学过操作系统的同学对这个名字肯定很熟悉。Mutex,互斥量,就是互转载 2022-03-15 17:42:13 · 14253 阅读 · 1 评论 -
malloc/free与new/delete
一、基本概念malloc/free:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2.内存操作: malloc函数的参数是接受需要分配的内存字节数,如果内存能够满足请求量,那么将会返回:指向被转载 2022-03-03 18:28:02 · 843 阅读 · 0 评论 -
函数指针-仿函数-Lambda表达式
函数指针将函数赋给一个变量 可以用于函数传递 常用来扩展函数能力#include <vector>//函数指针的表示 (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);void Foreach(const vector<int> & v, void(*func)(int a)){ for(int value:v): func(value);}vo原创 2022-02-28 15:43:26 · 812 阅读 · 0 评论 -
C++中前置++后置++的区别
结论:前置自增 (++i) 通常要比后置自增 (i++) 效率更高理由看代码class MyInteger { friend ostream& operator<<(ostream& out, MyInteger myint);public: MyInteger() { m_Num = 0; } //前置++ MyInteger& operator++() { //先++ m_Num++; //再返回 return *this;原创 2021-11-23 16:42:19 · 1129 阅读 · 0 评论 -
C++中的虚函数表
多态的内部就是虚函数表一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚表。我们来看以下的代码。类A包含虚函数vfunc1,vfunc2,由于类A包含虚函数,转载 2021-11-23 15:45:04 · 144 阅读 · 0 评论 -
c++父类中的析构函数为什么一定是虚函数?构造函数一定不能是虚函数?
先看两个例子 注意在多态下的析构函数调用#include<iostream>#include<list>#include<string>#include<vector>using namespace std;class base{public: ~base() { cout<<"父类析构函数被调用"<<endl; }};class derived:public base{public: char原创 2021-11-23 14:42:09 · 1187 阅读 · 0 评论 -
c++中static关键字
1(面向对象的)静态成员变量在类内成员变量的声明前加上关键字static,该数据成员就是类内的静态数据成员。#include <iostream.h>class Myclass{public: Myclass(int a,int b,int c); void GetSum();private: int a,b,c; static int Sum;//声明静态数据成员};int Myclass::Sum=0; //定义并初始化静态数据成员Myclass::Myc转载 2021-11-23 14:27:49 · 423 阅读 · 0 评论