
c++
文章平均质量分 70
qq_35429629
这个作者很懒,什么都没留下…
展开
-
windows安装boost库
boost官网下载boost库编译参考https://gist.github.com/sim642/29caef3cc8afaa273ce6?tdsourcetag=s_pctim_aiomsg原创 2020-04-11 22:35:39 · 365 阅读 · 0 评论 -
在普通的函数当中调用虚函数和在构造函数当中调用虚函数有什么区别?
面试常见题。事实上在语法上是没有问题的,编译可以通过。问题在于构造函数中调用虚函数无法实现多态。看下面的代码:class A{public: A() { show(); }//行4 virtual void show() { cout << "A"; } void anotherShow(){show();}//行6}; class B:public A{pu...转载 2020-04-07 23:22:51 · 699 阅读 · 2 评论 -
c++ overload(重载)、override(覆盖)、overwrite(重写)的区别
overload和override是用来实现C++多态的,C++多态主要是通过静态多态(overload、编译时确定)和动态多态(override、运行时确定,动态绑定)来实现的。overload 重载,即函数重载1、在同一个类中;2、函数名字相同;3、函数参数不同(类型不同、数量不同,两者满足其一即可,还有的说参数顺序不同,也是其一);4、不以返回值类型不同作为函数重载的条件over...原创 2020-03-27 20:33:39 · 526 阅读 · 0 评论 -
static关键字在c和c++中的作用
1、c语言中static的作用1.1、先来介绍它的第一条也是最重要的一条:隐藏当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg() { printf("He...原创 2020-03-22 11:33:02 · 479 阅读 · 0 评论 -
字符串string和整数int的互相转化方式 (c++ 、c)
1、string转int的方法1.1 c的函数 char * 转 int int a = atoi(s.c_str());//c的函数 char * 转 int1.2 c++的函数string 转 intint b = stoi("12w");//c++的函数string 转 int 如果参数不正确,会抛出一个invalid_argument的异常,比如"w12w"1.3 采用sst...原创 2020-03-22 00:04:56 · 297 阅读 · 0 评论 -
论C++中复制(拷贝)构造函数与operator=(赋值运算符重载)
相信大家对复制构造函数与重载=运算符都不陌生,但是两者几乎是等效的,这会使很多萌新一脸懵逼,究竟这行代码是调用了复制构造函数还是调用了operator=函数呢?下面我们就通过实验来探究这个问题//拷贝构造函数(又名复制构造函数)与赋值运算符重载的区别class TestClass{ public: TestClass(); TestClass(const...转载 2020-03-19 23:09:25 · 3108 阅读 · 1 评论 -
String类的实现
详细的String类的实现#include<iostream>using namespace std;class String{ public: String(const char* str=NULL); //普通构造函数 Strng(const String &other); //拷贝构造函数 String...转载 2020-03-19 22:46:15 · 116 阅读 · 0 评论 -
c++野指针、内存泄漏、内存溢出?
野指针指针变量未被初始化。指针变量在创建的同时应当被初始化,要么将指针置为NULL,要么让它指向合法的内存*/int *m;//初始化指针变量,缺省值随机,乱指一气cout<<" m = "<<m<<endl;指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针有时指针在free或delete后未赋值 NULL,...转载 2020-03-19 22:14:54 · 315 阅读 · 0 评论 -
C++中为什么需要将基类的析构函数设置为虚函数?
大家知道,析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢?直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会调用基类的析构函数,而不会调用派生...转载 2020-03-19 21:49:12 · 427 阅读 · 0 评论 -
c++之多线程创建的三种方式
c++11之后支持了多线程编程。在 C++11 中我们可以通过创建 std::thread 对象来创建新的线程。每个 std::thread 对象都可以与一个线程相关联。给 std::thread 对象添加函数,std::thread thObj();这个回调函数将在这个新线程启动时执行。这些回调可以是:函数指针函数对象Lambda函数使用函数指针创建线程#include <...转载 2020-03-04 20:51:15 · 3161 阅读 · 0 评论 -
c++中指针和引用的区别
引用以下程序中,n 是m的一个引用(reference),m 是被引用物(referent)。int m; int &n = m; n 相当于 m 的别名(绰号),对 n 的任何操作就是对m的操作。所以 n 既不是m的拷贝,也不是指向 m 的指针,其实n就是 m 它自己。引用的规则引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。不能有 NULL 引用,引用...转载 2020-02-28 14:40:06 · 142 阅读 · 0 评论 -
c++的深拷贝和浅拷贝
1.在使用一个对象对另一个对象初始化或赋值时,若对象包含指针成员变量,则需要手动的编写拷贝构造函数实现深拷贝,调用编译器的内部默认的拷贝构造函数则只能实现浅拷贝操作。通过蓝色操作:在拷贝指针的同时为指针重新分配内存空间。2.通过深拷贝(显示重载=操作符,或显示定义拷贝构造函数)解决浅拷贝出现的问题使用默认的拷贝构造函数时:析构的时候,内部Name中有指针,那么obj1和obj2会指向同...转载 2020-02-27 18:56:22 · 153 阅读 · 0 评论 -
error:crosses initialization of ...的解决办法
switch(c){ case 0x01: int temp = a + b; .... break; case 0x02: break; default:break;}此时会报如题所示错误原因是因为C和C++中,一个变量的生命期(作用域)是这么规定的,中文还不好解释,英文原文是这样的:T...转载 2020-02-23 18:41:59 · 948 阅读 · 0 评论 -
C++字符串分割方法总结
在一些编程练习中,经常会对字符串进行处理,往往处理之前都会对字符串进行分割来提取各部分信息。在C++中虽然没有像python那样提供split这样直接的字符串分割函数,但也有一些其他的方法能够对其进行分割,下面介绍几种C++中常用的字符串分割方法。通过string成员函数实现在C++ string类中,提供了两个成员函数可以用来实现字符串分割,一个是find函数,另一个是substr函数,下面...转载 2020-02-15 20:21:01 · 927 阅读 · 0 评论 -
【C++----12】C++的sort函数的使用,基本语法和普通排序,数组使用和string排序使用;
sort使用:1.基本语法:1、需要使用头文件 #include和using namespace std;2、语法:sort(begin,end,cmp),cmp参数可以省略,默认按升序排序。3、begin表示要排序元素的首地址,end表示要排序元素的结束地址;2.默认从小到大排序:#include<iostream>#include<algorithm>...转载 2020-02-12 22:19:56 · 290 阅读 · 0 评论 -
C++中的类拷贝构造函数和模板拷贝构造函数
类(包括模板类)构造函数是真实的构造函数;然而模板构造函数,其实质是模板函数。两者不能混为一谈。在一个模板类中,构造函数和模板构造函数同时存在时,优先调用构造函数。只有当确切符合模板构造函数的接口时,才调用模板构造函数。编译器永远不会把模板构造函数视为构造函数,即使客户没有自己定义拷贝构造函数,编译器也会生成一个默认的拷贝构造函数,这种情况同样存在于拷贝赋值函数和模板拷贝赋值函数。请看下面的例子:...转载 2019-07-08 17:34:57 · 1144 阅读 · 0 评论 -
c++ 模板----成员函数模板
Member Template(成员模板)class member function可以是个template,但这样的member template既不能是virtual,也不能有缺省参数。例如:class MyClass{…template void f(T);}在这里,MyClass::f声明了一个成员函数集,适用于任何类型参数。参数类型为T类型。相同类型的类模板作为函数参数...原创 2019-07-04 17:47:29 · 4957 阅读 · 0 评论 -
c++标准程序库----第三章 一般概念
3.1 命名空间(namespace) std所谓namespace,是指标识符的某种可见范围。事实上,c++标准程序库中的所有标识符都被定义于一个名为std的namespace中。由于namespace的概念,使用c++标准程序库的任何标识符时,有三种选择:1、直接指定标识符,例如std::ostream而不是ostreamstd::cout<<std::hex<&l...原创 2019-07-05 11:51:59 · 554 阅读 · 0 评论 -
c++标准程序库 第二章之型别转换、显式初始化
型别转换操作符(Type Conversion Operators)1、static_cast将一个值以符合逻辑的方式转型如:float x;cout<<static_cast<int>(x);//float转换为int2、dynamic_cast多态型别向下转型为实际静态型别。。。基类–>派生类。这是唯一在执行期进行校验的转型动作。如:class ...原创 2019-07-05 17:38:15 · 179 阅读 · 0 评论 -
c++标准程序库----第五章
随机存取迭代器(random access iterators)有vector、deques,可以使用算术运算即vector coll;for(int i=20;i<=40;++i)coll.push_back(i);vector::iterator pos25=find(coll.begin(),coll.end(),25);vector::iterator pos35=fin...原创 2019-07-16 22:26:01 · 164 阅读 · 0 评论 -
c++之string&&char *&&char[]互转
string转char*的三种方法//string str;//str.data();str.c_str();两种方法都可以将string转换成const char*,但如果需要进一步转换成char*,则需要使用下面的方法strcpy_s(char destinaton,size_t,const charsource);void max(char *m){ cout << ...原创 2019-05-23 16:09:11 · 476 阅读 · 1 评论