C++
文章平均质量分 52
..................合
记忆是思考的残留物
展开
-
openc4.5.2 vs2019安装教程 以及出现 LNK110:无法打开文件 “opencv_world410d.lib的解决方案
写在前面最近发现一个很赞的opencv +vs 的安装教程,但是因为版本不一样,所以导致安装出现了些问题,本人把原文链接放于此处,本文根据不同的opencv的版本提出了一点小修改原文链接如下,如有侵权,本人立刻删除!VS2019+OpenCV4.1.0安装及整合详细步骤出现LNK110:无法打开文件 “opencv_world410d.lib的解决方案如果安装的版本和上面链接给的版本是一样的则不需要再看我的下文的,如果是更新的版本,可以浏览一下我下面的步骤这个图是从上面的链接截取下来的,是里面转载 2021-04-19 15:39:51 · 2562 阅读 · 0 评论 -
c++ 面向对象实现has-a时 啥时候用包含,啥时候用私有继承
文章目录包含和私有继承的关系构造函数初始化的不同使用包含还是私有继承c++ 面向对象的过程中,包含和私有继承都可以实现has-a的关系,下面我们来讨论一下啥时候用包含,啥时候用私有继承包含和私有继承的关系包含将对象作为一个命名的成员对象添加到类中,而私有集成将对象作为一个未被命名的继承对象添加到类中我们称通过包含或者继承而来的对象为术语子对象(subobject)私有继承提供的特性和包含相同获得实现不获得接口构造函数初始化的不同包含的类的写法class Student{pri原创 2021-01-22 15:07:15 · 202 阅读 · 0 评论 -
C++ 私有继承和包含的 构造函数的不同写法
包含的类的写法class Student{private: string name; //use a string object for name valarray<double> scores; //use a val}私有继承的类的写法class Student : private std::string,private std::valarray<double>{public: ……}参考文献【1】C++ Primer 14章 14.2.1.原创 2021-01-22 11:48:28 · 144 阅读 · 0 评论 -
C++ 私有继承和包含 访问基类函数方法的异同
包含的类的写法class Student{private: string name; //use a string object for name valarray<double> scores; //use a val}私有继承的类的写法class Student : private std::string,private std::valarray<double>{public: ……}使用包含时将使用对象名来调用方法,而使用私有继承时将使用类名和作用原创 2021-01-22 11:46:17 · 184 阅读 · 0 评论 -
类的派生中 重载 重写(覆盖)隐藏 三种的区别
文章目录三者的定义重载重写(覆盖)隐藏两两之间的区别隐藏和重写的区别重写和重载的区别重载和隐藏的区别表格总结三者的定义重载是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。class A{public: void test(int i); void test(double i);//overload void test(int i, double j);//overload void test原创 2021-01-20 11:25:27 · 309 阅读 · 0 评论 -
C++ 类的继承中 构造函数的写法 和 继承类的使用
为什么要继承类面向对象的编程的主要优点之一就是提供可重复的代码,而类的继承便是为了更好地实现这一优点,具体如何实现可以参考我的另外一篇文章 面向对象的优点以及原理的简单解释如何继承一个类关于如何继承一个类的前提自然是你首先得有一个父类,也可以被称作基类,没有这个东西就无谈继承,所以我们先假设我们拥有父类如下代码。class Time {public: Time() { } Time(const string &NowHour_, const string &NowMinute原创 2021-01-19 16:17:12 · 1604 阅读 · 1 评论 -
C++关键字friend 友元的简单使用方法
为什么会有友元函数C++控制对类对象私有部分的访问,通常,公有类是提供唯一的访问途径,但是有时候这种限制太严格了,以至于不适应特定的编程,在这种情况下,C++提供了另外一种形式的访问权限:友元友元的定义友元有三种友元函数友元类友元成员函数通过让函数拥有类的友元,可以赋予该函数与类的成员函数相同的访问权限,这里我们主要讲的是友元函数怎么使用友元函数把该函数原型放到类声明中,并在原型声明前加上关键字friendclass Time{public: friend Time add(do原创 2021-01-18 14:22:16 · 218 阅读 · 0 评论 -
C++ 运算重载符的简单阐述
运算符重载是一种形式的C++多态多态指的是用户能够定义多个名称相同但特征标(参数列表)不同的函数为什么要使用运算符重载让不同的数据类型拥有一样的操作运算符,想象一下如果必须对不同的物体使用不同的动词,比如同一个动作提,如果提起左脚和提起汤匙得分别用两个不一样的动词lift_lft和lift_sp,那英语讲会变得无比复杂。c语言的运算符重载,比如 * 既表示乘法,也在指针中表示取值如何使用运算符重载运算符重载的定义 图1:正常的求和函数 .原创 2021-01-18 11:13:24 · 137 阅读 · 0 评论 -
C++ this指针 具体解析
为什么需要this指针在C++中每个新生成的对象都有一个地址,比如我们用下面方法来生成的对象,food3表示指向该对象的地址,而this的含义和food3是一样的,都是一个指向对象的地址。stock* food3 = new stock("wang3",1,2);food3->OutPut(); 比如在一个类中,有一个比较函数名字叫做topval它比较一个输入的类的total_val值和该类自身的tatal_val值,并返回数值较大的那个数的对象指针,我们可以清晰的知道,如果输入的Stock原创 2021-01-18 10:05:23 · 126 阅读 · 0 评论 -
C++ 如何生成一个新对象? 以及构造函数的分析
文章目录本文核心析构函数的声明和定义如何生成一个新的类以及 构造函数的使用显式调用隐式调用使用new初始化构造函数调用的总结本文核心C++目前我知道的有三种方式可以生成一个类,以前总是搞混,今天有空了总结一下。析构函数的声明和定义构造函数的参数表示的不是类成员,而是要赋给类成员的值,因此参数名不能与类成员相同构造函数是类在初始化的时候会被自动调用的函数下面放上一个构造函数的例子#include <iostream>#include <string>using原创 2021-01-17 15:50:15 · 563 阅读 · 0 评论 -
关于 面向过程编程 和 面向对象编程几个例子
几个生动的例子面向对象如活字印刷,面向过程如雕版印刷,面向过程的时候你需要从头到尾考虑每一个细节,比如你要刻下学而时习之,不亦说乎这几个字,如果是雕版印刷,你肯定要一环扣一环,“学”后面要刻“而”,“而”后面要刻好“时”,一旦你想改成学而时习之,我不亦乐乎。则原来那一块雕版就得作废,重头改。而面向对象则把每一个字看作一个对象,类似于活字印刷,你如果想加字,你只要再多刻一个“我”就可以了,其它写好的就不用改了。并且在这里我引申出以下几个概念一、要改,只需更改要改之字,此为可维护;二、这些字并非用完原创 2021-01-16 23:33:17 · 3651 阅读 · 5 评论 -
C++ 名称空间
为什么要用名称空间我们首先想知道我们为什么需要一个名称空间呢?它有什么用呢?我们先看下面这个例子比如有A厂写的代码里面包含了一个函数wanda()B厂写的代码里面也包含了一个函数wanda()此时如果你想把A B两个厂商的代码组合起来,就有可能会发生函数名字冲突这样的事情。而名称空间能让厂商把其产品封装在一个叫做名称空间的单元中,这样就可以使用名称空间来指出想用哪个厂商的产品。比如使用A公司的wanda()函数可以这样写A:wanda();使用B公司的wanda()函数可以这样写B原创 2021-01-16 21:09:23 · 175 阅读 · 0 评论 -
C++枚举(enum)
enum 枚举的定义C++的enum工具提供了另外一种创建符号常量的方式,这种方法可以替代const,它还允许定义新的类型,但必须按照严格得限制进行。使用enum的句法与使用结构体类似先摆上一个例子enum spectrum{red, orange, yel1ow, green, blue,violet,indigo,ultraviolet} ;spectrum band;//定义一个新的spectrum类型的变量band=blue;//合理的赋值,因为blue在变量spectrum中band=原创 2021-01-15 11:51:17 · 1066 阅读 · 1 评论 -
C++ 公用体(union)
共用体的定义共用体(union)是一种数据格式,它能够存储不同的数据类型,但同时只能存储一种类型,可看下方例子union one4all{ int int_ val; long long_ val; double double_ val ;};我们可以使用one4all变量来存储 int long double类型的数据,但不能是同时进行one4all pail;pail.int_ val = 15; // store an intcout << pail.int_ val原创 2021-01-15 11:03:46 · 390 阅读 · 0 评论 -
C++ string 类与字符串数组异同的对比分析
文章目录string 与 字符串数组的区别string与字符串数组的不同string与字符串数组的相同点string类详解string的使用前提条件string的初始化string 的赋值 拼接和 附加string 与 字符串数组的区别string与字符串数组的不同string是一个类,string a="wang;中的a是一个对象字符串数组本质上是一个数组string类使用起来比数组要简单不能直接把一个字符串数组赋值给另外一个数组,但是string可以字符串数组的赋值拼接使用下面两个函数原创 2021-01-15 10:06:11 · 2938 阅读 · 0 评论 -
c++ 中 cin getline get的详解
cingetlineget原创 2021-01-14 15:52:44 · 183 阅读 · 0 评论 -
C++字符串的拼接与使用
字符串拼接在输出函数中拼接在C++中可以直接在输出函数中使用字符串拼接 string a = "hello"; string b = "world"; cout<< "hello" "world"<<endl;//合法语句 cout <<a+b<< endl;//不合法语句对于上述的合法语句其输入如下,hello后直接跟着world,中间不会有空格...原创 2021-01-14 11:17:33 · 1880 阅读 · 0 评论 -
C语言基础知识 以及 字符串常量 字符常量的区别
C-风格(c-style string)字符串C-风格字符串的结尾标定char dog[8] = { 'b', 'e', 'a', 'u', 'x','I','I', 'I'};// not a string!char cat[8] = {'f', 'a', 't', 'e', 's','I', 'a', '\0'}; // a string!上面dog不是 字符串,而cat才是字符串,关于这些知识点,我总结如下只有含有’\0’空字符在末尾的char数组才能被算作字符串\0的ASCLL码原创 2021-01-14 10:18:55 · 351 阅读 · 0 评论 -
C++ 数组知识小结
文章目录C语言数组的创建方法一:全部不初始化方法二:部分初始化方法三:全初始化但不指定数组长度方法四:全初始化并指定数组长度C++11的关于数组的新特性C语言数组的创建方法一:全部不初始化//方法一int moths[12]; //创建一个数组,为int型,不初始化//其可以抽象化为typeName arrayName[arraysize]typeName就是上式中的intarrayName就是上式中的moths12就是上式中的12其中对arraysize有以下几点要求它必须是整原创 2021-01-13 14:34:13 · 271 阅读 · 0 评论 -
C++剖析 cout<<“hello world“<<endl;
什么是coutcout是一个对象它的作用是把通过<<输入它的消息显示在屏幕上(具体怎么实现可以暂时不用了解。这就是对象的好处之一,你可以不需要理解它的内部工作原理,只要知道怎么用就行)cout<<"aa"这句语句的含义就是把字符串"aa"插入到输出流中去,插入之后对象cout 会自动想办法把插入的流显示到屏幕上。什么是<<<<和左移运算符一样你可能会疑问为什么左移运算符可以表示插入这里是使用了运算符重载,<<被重载成了插入运算原创 2021-01-13 10:47:57 · 13694 阅读 · 3 评论 -
C++中名称空间与 using的作用
文章目录名称空间是什么using的使用using namesapce std;的解释名称空间是什么为了让编写大程序以及多个厂商现有代码组合起来更方便,比如有A厂写的代码里面包含了一个函数wanda()B厂写的代码里面也包含了一个函数wanda()此时如果你想把A B两个厂商的代码组合起来,就有可能会发生函数名字冲突这样的事情。而名称空间能让厂商把其产品封装在一个叫做名称空间的单元中,这样就可以使用名称空间来指出想用哪个厂商的产品。比如使用A公司的wanda()函数可以这样写A:wanda原创 2021-01-13 10:07:22 · 233 阅读 · 0 评论 -
C++如何在不用取整和取余的情况下读取一个数字的每一位
把数字转为字符串string strNum = to_string(N);操作每一位for(int i=0;i<strNum.size();i++){ strNum[i]=……}再把字符串转换为数字stoi(strNum)原创 2021-01-12 16:51:05 · 432 阅读 · 0 评论 -
关于C++ 与C 语言头文件的异同,以及关于头文件中包含.h的讨论
C语言头文件风格以.h结尾,例如 math.h stdio.hc++头文件风格新版的专门为C++写的头文件已经不包含.h函数 如#include <iostream>老版本的原来为C语言写的头文件如math.h在C++中有些被转换成cmath对于纯粹的C++头文件(如iostream)去掉h不只是形式上的变换,没有h的头文件也可以包含名称空间(关于什么是名称空间这里先埋下一个坑,后续再记上)...原创 2021-01-12 12:38:54 · 227 阅读 · 0 评论 -
c++让控制窗口一直保持不闪退,直到你按下任何按键
如下图代码所示#include<iostream>int main(){ using namespace std; cout<<"hello world"<<endl; return 0;}运行以后,控制台会一闪而过,如何让控制台一直保持,直到我们按下任何键它才消失呢?其代码可以这样写#include<iostream>int main(){ using namespace std; cout<<"hello world"原创 2021-01-12 11:10:08 · 4167 阅读 · 1 评论