![](https://img-blog.csdnimg.cn/direct/886fea955a1049339b3a1f2dd915b065.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 85
c++代码
txinyu的博客
这个作者很懒,什么都没留下…
展开
-
C++ 第四弹动态内存管理
5.1语法格式new [参数列表 ] TYPE [初始化列表 ]//内置类型5.2使用场景:内存池。原创 2023-06-24 09:45:24 · 208 阅读 · 1 评论 -
C++ 第三弹继承和多态-类和对象
通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。原创 2023-06-24 08:48:38 · 376 阅读 · 0 评论 -
C++ 第五弹模板
如果模板可以产生一个具有更好匹配的函数, 那么将选择模板。通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,需要特殊处理,在原模板类的基础上,针对特殊类型所进行特殊化的实现方式。1. 一个非模板函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定。,然后将实例化的类型放在中即可,类模板名字不是真正的类,而实例化的结果才是真正的类。原创 2023-06-24 11:44:26 · 281 阅读 · 0 评论 -
C++ 第一弹入门基础
在c++中为了避免相同名字的变量,函数,类发生名字冲突,使用namespace关键字进行命名空间定义 namespace+空间名 {} 命名空间定义了新的数据域,命名空间的所有内容都局限于该空间,命名空间可以嵌套 如果出现多个名字相同的命名空间 编译器会将他们合成到一个命名空间中。原创 2023-06-22 22:21:05 · 390 阅读 · 0 评论 -
C++ 第二弹封装-类和对象
Class关键字加 类名 Class 类名 {};在C++中class和struct都可以定义类 第一种方式声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。第二种方式 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数前需要加类名。原创 2023-06-23 15:38:24 · 492 阅读 · 0 评论 -
memmove
函数说明:memmove用于从src拷贝count个字节到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区域中。函数原型:void *memmove(void *dest, const void *source, size_t count)参数说明:dest,src分别为目标串和源串的首地址。count为要移动的字节的个数。返回值说明:返回指向dest的void *指针。他其实就是比memcpy, memcpy多了。原创 2023-09-11 12:16:10 · 129 阅读 · 0 评论 -
C++17
正常情况下,lambda表达式中访问类的对象成员变量需要捕获this,但是这里捕获的是this指针,指向的是对象的引用,正常情况下可能没问题,但是如果多线程情况下,函数的作用域超过了对象的作用域,对象已经被析构了,还访问了成员变量,就会有问题。C++17增加std::variant实现类似union的功能,但却比union更高级,举个例子union里面不能有string这种类型,但std::variant却可以,还可以支持更多复杂类型,如map等。原创 2023-08-30 07:53:33 · 470 阅读 · 7 评论 -
C++11的四种强制类型转换
4、使用dynamic_cast进行转换的,基类中一定要有虚函数,否则编译不通过,类中存在虚函数,就说明它有想要让基类指针或引用指向派生类对象的情况,此时转换才有意义。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。换句话说,它可以在执行期决定真正的类型,如果基类指针真的指向了子类对象,它便返回指子类对象的指针值,否则,则返回空指针。1、其他三种都是编译时完成的,dynamic_cast是运行时处理的。原创 2023-08-23 21:44:55 · 1097 阅读 · 13 评论 -
面向接口编程
面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件(例如Spring框架)中该接口 的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。原创 2023-08-16 22:25:29 · 896 阅读 · 0 评论 -
C++内存模型
堆内存空余内存地址是一个链表的结构存储的,当一个程序请求过来的时候(此时所需的内存大小已经计算好),就会开始遍历这个链表找个比这个程序所需内存大的节点用来给你程序执行所用,此时就会在链表的节点上删除这个即将被占用的内存节点,因为new对象的这个过程是比较缓慢的而且链表上的每个节点内存大小也是不确定的所以就会产生内存碎片,不过用起来非常方便。(2)申请相对应的空间,如果没有足够的空间或其他问题且没有定义_new_hanlder,那么会抛出bad_alloc的异常并结束程序。(7)返回申请到的内存的首地址。原创 2023-08-25 16:31:33 · 520 阅读 · 10 评论 -
C++14
C++14通过std::shared_timed_mutex和std::shared_lock来实现读写锁,保证多个线程可以同时读,但是写线程必须独立运行,写操作不可以同时和读操作一起进行。C++14中增加了deprecated标记,修饰类、变、函数等,当程序中使用到了被其修饰的代码时,编译时被产生警告,用户提示开发者该标记修饰的内容将来可能会被丢弃,尽量不要使用。返回类型推导可以用在递归函数中,但是递归调用必须以至少一个返回语句作为先导,以便编译器推导出返回类型。就是给字符串加上双引号。原创 2023-08-29 21:30:18 · 185 阅读 · 6 评论