C++
Alocus_
要每天学习!要进步!要自信!有任何问题联系我!
展开
-
C++ 算法
#include <iostream>#include <string>#include <vector>#include <algorithm>int main(){ std::vector<std::string> names; names.push_back("xjy"); names.push_back("lxx"); names.push_back("ajy"); n...原创 2021-04-29 14:21:50 · 153 阅读 · 0 评论 -
C++ 容器
//能容纳两个或更多个值的数据结构即为容器//前面的基于模板的Stack类就是一种新容器//C++标准库提供向量vector类型,解决数组先天不足的问题。//创建不同类型的向量std::vector<type>vectorName;//使用size()方法查给定向量的长度,定义一个向量后,使用push_back()方法添加东西//使用访问数组的方法访问向量中的元素.//向量示例(向量容器)#include <iostream...原创 2021-04-29 14:21:35 · 159 阅读 · 0 评论 -
C++ 迭代器
//迭代器提供*,++,==,!=,=//迭代器是智能指针,,,,能够遍历复杂数据结构。每一种容器都必须提供自己的迭代器。//各种迭代器接口相同,型号却不同,即泛型程序设计概念:操作行为使用相同接口,具体实现不同。//使用迭代器,修改向量容器。#include <iostream>#include <string>#include <vector>int main(){ std::vector&...原创 2021-04-29 14:21:22 · 155 阅读 · 0 评论 -
C++ 内联函数
//内联,inline,编译时类似宏替换,使用函数体替换调用处的函数名。用于被经常调用的函数,可以将该函数的机器码插入到调用它的地方,提高效率,//内联模板例子://inlineintadd(intx,inty,intz)//{//returnx+y+z;//}//调用其函数时,该函数在编译时被替代,不像一般函数那样在运行时被调用//在类里,内联方法的基本含义是在声明该方法的同时对它进行定义//若在自己程序里使用Stack模板,一定要给...原创 2021-04-29 14:21:05 · 163 阅读 · 0 评论 -
C++ 模板
//目前介绍的两种C++程序设计范式//按照面向过程式范型,将程序划分不同函数//按照面向对象式范型把代码和数据组织成各种各样的类,并建立类之间继承关系//下面介绍另一种范型:范型编程//范型编程技术支持程序员创建函数和类的蓝图(即模板template),而不是具体的函数和类//这些模板可以没有任何类型,他们可以处理的数据并不仅限于某种特定的数据类型。当程序需要//用到这些函数中的某一个时,编译器将根据模板即时生成一个能够对特定数据类型进行处理的代码版本...原创 2021-04-29 14:20:46 · 172 阅读 · 2 评论 -
C++ 强制类型转换2
//动态对象强制类型转换,使用时像函数。如// Company *company = new Company("Apple","Iphone");//TechCompany *techCompany = dynamic_cast<TechCompany*>(company);// dynamic_cast<TechCompany*>(company) 如果错误,会返回NULL 可用if来预先判断//如下代码#include <iostream>..原创 2021-04-29 14:20:27 · 228 阅读 · 0 评论 -
C++ 强制类型转换
#include <iostream>#include <string>class Company{public: Company(std::string theName,std::string product); virtual void printInfo();protected: std::string name; std::string product;};class TechCompany : public Company{pub...原创 2021-04-29 14:20:01 · 194 阅读 · 0 评论 -
C++ 副本构造器2
//改下测试代码 MyClass obj1; MyClass obj2 = obj1;//虽然看起来一样, 但是编译器却生成完全不同的代码//编译器将在MyClass类里寻找一个副本构造器 如果找不到 会自行创建一个//此时 及其对赋值操作符进行了重载,由于创建副本构造器//仍会以逐位复值的方式将obj1给obj2// 副本构造器 MyClass(const MyClass &rhs)//需要固定不变const 的myclass类//修改后代码#include <.原创 2021-04-29 14:19:36 · 182 阅读 · 0 评论 -
C++ 副本构造器
//编译器将生成必要的代码把源对象各属性的值分别赋值给目标对象的对应成员//,以上赋值即逐位复值bitwisecopy//当某些成员变量是指针时,对象成员进行逐位复值的结果是你将拥有//两个一模一样的实例,且两副本里的同名指针会指向相同地址//删除一个对象时,其包含的指针也会被删除,若另外一个副本(对象)也在引用该指针,就会出错//例子:MyClassobj1;Myclassobj2;obj2=obj1;//方法:重载操作符,如下//MyClass&am...原创 2021-04-29 14:18:51 · 292 阅读 · 0 评论 -
C++ 函数指针和指针函数
//函数指针示例:#include <stdio.h>int fun(int x, int y);int main(){ int i,a,b; int (*p)(); //声明函数指针 scanf("%d",&a); p = fun; //给函数指针p赋值,并指向函数f printf("请输入数字:"); for(i = 0; i<10;i++) { scanf("%d",&b); .原创 2021-04-29 14:18:20 · 160 阅读 · 0 评论 -
C++ 内存管理
动态分配的内存块没有作用域,需要程序猿跟踪处理,删除等。但是用来保存其地址的指针变量是受作用域影响的。#include <iostream>#include <string>class Company{public: Company(std::string theName); virtual void printInfo();protected: std::string name;};class TechCompany : public原创 2021-04-28 17:06:13 · 310 阅读 · 0 评论 -
C++ 虚继承
查看多继承。当多继承时,classes属性合理,但是name属性会出现麻烦。会出现两个不同name舒属性。通过虚继承某个基类,就是在告诉编译器,从当前这个类再派生出来的子类只能拥有那个基类的一个实例。从student和teacher都虚继承自person类,编译器将确保从student和teacher类再派生出来的子类只拥有一份person类的属性。虚继承语法:classTeacher:virtualpublicPerson{}#include <iostrea...原创 2021-04-28 17:05:53 · 250 阅读 · 0 评论 -
C++ 多继承
如有老师学生,他们都是人,老师类学生类继承人类。但是如果学生兼职当老师,则也是老师。那么该人同时继承老师类,和学生类。下面为上面的实现。#include <iostream>#include <string>class Person{public: Person(std::string theName); void intorduce();protected: std::string name;};class Teac...原创 2021-04-28 17:05:33 · 333 阅读 · 0 评论 -
C++ 操作符重载
通过重载操作符<<来实现运算符重载中的打印分数的功能。<<将数据插入流中,即插入器#include <iostream>#include <string>#include <stdlib.h>class Rational{public: Rational(int num, int denom);//num 分子,denom 分母 Rational operator+(Rational rhs);//rhs...原创 2021-04-28 17:05:06 · 215 阅读 · 0 评论 -
C++ 加减乘除重载
#include <iostream>#include <string>#include <stdlib.h>class Rational{public: Rational(int num, int denom);//num 分子,denom 分母 Rational operator+(Rational rhs);//rhs == right hand side Rational operator-(Rational rhs); .原创 2021-04-28 17:04:40 · 594 阅读 · 0 评论 -
C++ 多态、虚函数、虚方法
多态性:用一个名字定义不同的函数,调用同一个名字函数,却执行不同操作,即一个接口,多种方法。多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。 类的多态性:指用虚函数和延迟绑定来实现。 函数的多态性:函数的重载。C++的多态性:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数存在虚函数...原创 2021-04-28 17:04:17 · 310 阅读 · 0 评论 -
C++ 运算符重载
运算符重载通过定义函数实现的。其实质为函数的重载。#include <iostream>class Complex{public: Complex(); Complex(double r,double i); friend Complex operator + (Complex &c,Complex &d); void print();private: double real; double imag;};Co.原创 2021-04-28 17:03:49 · 164 阅读 · 0 评论 -
C++ 友元关系
类之间的一种特殊关系,此关系可以允许友元类访问对方的pubic方法和属性,甚至protect,private方法和属性。声明一个友元关系:只要在类声明里的某个地方加上一条friendclass**即可#include <iostream>#include <string>class Lovers{public: Lovers(std::string theName); void kiss(Lovers *lover); void...原创 2021-04-28 17:03:35 · 236 阅读 · 0 评论 -
C++ 动态内存
注意:申请时使用new 。最后不要忘记释放,用delete#include <iostream>using namespace std; int main(){ int **p; int i,j; //p[4][8] //开始分配4行8列的二维数据 p = new int *[4]; for(i=0;i<4;i++){ p[i]=new int [8]; } for(i=0; i&l原创 2021-04-28 17:03:14 · 163 阅读 · 0 评论 -
C++ 静态属性和静态方法
静态成员是所有对象共享的,所以不能在静态方法里访问非静态的元素。非静态方法可以访问类的静态成员,也可以访问类的非静态成员#include <iostream>#include <string>class Pet{public: Pet(std::string theName); ~Pet(); static int getCount();protected: std::string name;private: stati原创 2021-04-28 16:27:12 · 374 阅读 · 0 评论 -
C++ 继承后重载
继承后重载:即先继承,然后再对继承的子类进行重载#include <iostream>#include <string>//吃的参数不同,调用对应的函数class Animal{public: Animal(std::string theName); void eat(); void sleep();private: std::string name;};class Pig:public Animal{public:原创 2021-04-27 20:34:48 · 730 阅读 · 0 评论 -
C++ 覆盖
覆盖:子类对基类的方法进行覆盖,但是能够调用基类的方法,且子类能够添加自己的内容#include <iostream>#include <string>class Animal{public: Animal(std::string theName); void eat(); void sleep();private: std::string name;};class Pig:public Animal{public:原创 2021-04-27 20:32:10 · 1286 阅读 · 1 评论 -
C++ 重载
重载是对方法的重写,通过不同的传参,能够达到不覆盖原来的方法,与原来方法共存的目的#include <iostream>#include <string>//吃的参数不同,调用对应的函数class Animal{public: Animal(std::string theName); void eat(); void eat(int eatCount); void sleep();private: std::string n原创 2021-04-27 20:29:50 · 236 阅读 · 0 评论 -
C++ this指针
当代码存在二义性,即传入的一个参数和属性重名时,用this。例如class Human{ char fishc; Human(char fishc);}Human::Human(char fishc){ //fishc = fishc; this->fishc = fishc;}//赋值操作符的左边将被解释为当前对象的fishc属性,右边被解释为构造器的传入来的fishc参数...原创 2021-04-27 20:26:09 · 152 阅读 · 0 评论 -
C++ 继承中的构造器和析构器
和普通的构造器析构器类似,不过在继承的类中进行操作#include <iostream>#include <string>class BaseClass{public: BaseClass(); ~BaseClass(); void doSomething();};class SubClass : public BaseClass{public: SubClass(); ~SubClass();};BaseCl原创 2021-04-27 20:22:52 · 236 阅读 · 0 评论 -
C++ 引用
引用就是用取址符,对地址内数据操作#include <iostream>void swap(int &x, int &y);main(){ int x,y; std::cout<< "输入两个不同的值"; std::cin >> x >> y; swap(x , y); //函数内x y 会直接由于定义时的& 变成对地址操作 std::cout << "调换后输出"原创 2021-04-27 20:10:34 · 136 阅读 · 0 评论 -
C++ 枚举
枚举(enum)类型用来创建一个可取值列表: enumweekdays{Monday,Tuesday,Wednesday,Thursday,Friday}创建 weekdaystoday;赋值 todat=Monday;enum中的各个枚举值在编译时会自动变成数字类型012...n用enum,就可以将字符用于用于switch中,实际是整型。int main(){ enum weekda...原创 2021-04-27 20:08:48 · 141 阅读 · 0 评论 -
C++ 联合
联合与结构相似,联合也可以容纳多种不同类型的值,但是每次只能#include <iostream>union mima{ unsigned long birthday; unsigned short ssn; char *pet;};int main(){ mima mima_1; std::cout <<mima_1.birthday << '\n'; mima_1.pet = "wangcai";原创 2021-04-27 20:05:28 · 257 阅读 · 0 评论 -
OpenCV4 C++ 快速入门视频30讲 - 系列合集 源代码(B站:OPENCV学堂)
目录B站视频《OpenCV4 C++ 快速入门视频30讲 - 系列合集》quickdemo.cppquickopencv.htest440.cppB站视频《OpenCV4 C++ 快速入门视频30讲 - 系列合集》下面为该课程中的全部源代码,纯手打,如有错误和其他问题,欢迎留言(涉及到的权重和图片代码等文件,如果需要请看评论区)quickdemo.cpp#include <quickopencv.h>void QuickDemo::colorSpace_De原创 2021-04-27 19:34:41 · 1649 阅读 · 2 评论 -
C++ 函数重载
重载不是面对对象的特征,只是可以简化处理。 同一个函数实现不同功能。 重载要谨慎,过多不易使程序读懂。只能通过不同参数重载,不能通过不同返回值。重载:参数不同。覆盖:全都相同//重载不是面对对象的特征,只是可以简化处理。 同一个函数实现不同功能。 重载要谨慎,过多不易使程序读懂。//只能通过不同参数重载,不能通过不同返回值。重载:参数不同。覆盖:全都相同#include <iostream>void convertTemperature(double tenmIn,char t.原创 2021-04-27 20:00:42 · 198 阅读 · 1 评论