自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 c++的文件输入与输出

#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;#include "fstream"//文件操作需要包含fstream头文件void main18(){ //输出流的类名为ofstream out file stream(输出流是将内容输出到文件中) ofstream fileO...

2019-01-30 14:43:51 261

原创 c++标准的IO输入流

在c中可以使用scanf()来接收键盘输入的数据,而在c++中有cin这样的标准输入流来处理键盘数据读取工作标准输入流对象cincin.get() //一次只能读取一个字符cin.get(一个参数) //读一个字符cin.get(三个参数) //可以读字符串cin.getline() //接收字符串(包括空格)cin.igno...

2019-01-30 14:35:38 122

原创 c++的异常抛出与异常处理

1 发生异常之后,是跨函数 :2 接受异常以后 可以不处理 再抛出异常3 catch异常的时 按照类型进行catch4 异常捕捉严格按照类型匹配c++利用try和catch捕获并处理异常,在python中利用try和except进行异常的处理与捕获void divide(int x, int y){ if (y == 0) { throw x; //抛出 int类型 异常 }...

2019-01-30 14:04:30 2848

原创 c++与c的数据类型转换

C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)aC++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 static_cast 静态类型转换 如int转换成charreinterpreter_cast 重新解释类型 (强制转换类型)dynamic_cast 动态类型转换 如子...

2019-01-30 11:31:42 282

原创 c++自定义的容器实现

通常我们使用的int、char等数据类型可以创建数组去容纳数据,其实我们自定义的类也能够像基础类型一样去创建容器容纳各种数据。包括基础数据类型、自定义的类对象、以及对象指针等等数据创建类对象的头文件#pragma once#include "iostream"using namespace std;template <typename T>//泛型编程,可以使类存储任意形...

2019-01-29 16:54:15 3035

原创 类模板的定义与继承实现

c++是面向对象的编程语言,固然避免不了对类使用泛型编程,以简便编程以下内容包括:1.单个类模板的用法2.从模板类派生(继承)普通类3.从模板类派生(继承)模板类4.模板函数——所有函数体都写在模板类的内部5.模板函数——所有函数体都写在模板类的外部6.模板函数——所有函数体都写在模板类的外部(类的声明与实现分开)1.单个类模板的用法1.1 在类的开头定义模板1.2 创建类对象...

2019-01-29 16:36:43 760

原创 函数模板与重载时的调用规则

对于这种 1.函数的业务逻辑一样 2.函数的参数类型不一样 的多次重复型函数,为了节省开发工作,提出泛型编程泛型编程:即用template定义一个泛型T,用它来统代类型全文内容包括以下几点:1.泛型函数的基础2.函数模板的强化(数组的泛型应用)3.函数模板与函数重载4.函数模板云函数重载相遇时的调用规则1.泛型函数的基础1.1函数模板分为显示调用和隐式调用,即主动地声明模板函数...

2019-01-29 15:11:28 598

原创 c++中字符串与字符数组的互相转换

在c++中与python不一样,python中使用print()可以输出任意类型的数据,但是c++不一样,c++对于数据格式要求更为严格,有时候输出就只能以字符输出,而不能用字符串输出void main(){ //字符串转字符数组 string name = "哈哈哈哈"; char buf[] = {0}; strcpy(buf , name.c_str());//字符串转字符数组,...

2019-01-29 14:17:46 31644 6

原创 c++面向抽象类(接口)编程及多继承接口编程

面向抽象类编程(面向一套预先定义好的接口编程):1.其实就是不同模块的解耦合,2.其本质是:就相当于以前的同名函数问题,子类和父类存在同名函数,必须用virtual关键字修饰,使其可以具备多态性质,但是现在将父类中的同名函数=0,构成了纯虚构函数#include <iostream>using namespace std;class Interface1//接口1//也叫抽象...

2019-01-15 22:49:35 330

原创 c++继承类中的同名成员变量和同名成员函数

在两个有继承关系的类中,出现了没有使用虚函数重写的同名函数,称此函数为重定义函数,同样还有重定义变量。在子类对象调用函数和赋值时,为了区分调用的函数和变量,通常使用域名作用符区分,如果不加作用域符,默认情况下谁的类声明的对象调用各自的函数和变量#include <iostream>using namespace std;class A{public: int a; int...

2019-01-14 22:26:21 1800

原创 c++函数的重载重写和重定义

重写 重载 重定义:1.重写发生在2个类之间,两个类之间有继承关系,出现同名的函数重写分为2种情况:a. 虚函数重写 将发生多态 加virtual关键字b. 非虚函数重写 (重定义) 不加virtual关键字2.重载必须在一个类之间,函数的重载就是函数名一样,参数列表不一样(类型、个数)#include <iostream>using na...

2019-01-14 22:18:00 839

原创 c++的虚析构函数

想通过父类指针 把所有的子类对象的析构函数都执行一遍释放所有的子类资源,就需要使用虚析构函数#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;//虚析构函数class A{public: A() { p = new char[20]; strcpy(p, "obja")...

2019-01-14 22:04:11 108

原创 c++的多态(一个接口,多种实现)

为什么要使用多态?为了解决同一段代码在不同的对象调用时有不同的效果,避免了代码的冗余实现多态的三个条件:1 要有继承2 要有虚函数重写3 用父类指针(父类引用)指向子类对象…#include "iostream"using namespace std;class animal{public: virtual int eat() { return 10; }};cla...

2019-01-14 21:55:43 1823

原创 c++继承中的构造与析构

继承中的构造顺序:先调用父类构造函数 再调用 子类构造函数继承中的析构顺序:析构的顺序和构造相反(先析构子类对象,再析构父类对象)1、子类对象在创建时会首先调用父类的构造函数2、父类构造函数执行结束后,执行子类的构造函数3、当父类的构造函数有参数时且没有无参构造函数时,需要在子类的初始化列表中显示调用(在类的组合使用中,也涉及到初始化列表的使用,不同的是,组合类已经声明了另一个...

2019-01-14 21:10:06 203

转载 c++字符串类的操作符重载

类的头文件:#pragma once#include "iostream"using namespace std;class mystring{public : mystring(); mystring(char *p); mystring(const mystring& obj); ~mystring();public: char& operator[](...

2019-01-14 20:41:44 315

原创 c++、opencv、python中计算程序运行时间

在c++中计算程序运行时间需要包含"time.h"头文件void main(){ clock_t startTime = clock();//clock_t数据类型在源码中定义:typedef long clock_t;即为长整型数据,所以可以使用double直接代替clock_t /* 程序块 */ clock_t endTime = clock();//clock()函数为获得...

2019-01-14 20:29:09 473

原创 c++数组类的操作符重载(数组的形成原理浅理解)

数组类的操作符重载的.h头文件:#pragma once#include <iostream>using namespace std;//先定义一个数组类,并对成员函数、构造函数、重载操作符函数进行声明class Array{public: Array(int length);//有参构造函数 Array(const Array& obj);//copy函数...

2019-01-09 10:23:40 387

原创 c++的左移右移操作符重载

重载左移右移操作符的意义:对于自定义类型的变量,c++编译器只能编译输出基础类型变量,所以想要输出自定义类型的对象元素就需要重载输出流操作符操作符的重载一般情况下是使用成员函数进行重载,在一些特殊情况不能使用成员函数重载就需要用友元函数进行重载(全局函数),例如:左移右移操作符注意:重载函数的返回类型应该是cout类型(ostream&)或者cin类型(iostream)#inclu...

2019-01-08 22:52:46 644

原创 c++解决对象浅拷贝问题之(重载等号操作符和手工编写copy构造函数)

C++编译器提供的 默认的copy构造函数 属于浅拷贝(所以需要重写copy构造函数)C++编译器提供的 等号操作= 也属浅拷贝(所以需要重载等号操作符)重载 等号操作=三步骤:1.先释放接收者旧的内存2.根据传递者的内存大小分配接收者的内存大小3.将传递者的数据拷贝给接收者#define _CRT_SECURE_NO_W...

2019-01-08 22:41:39 381

原创 c++的运算符重载

运算符重载的意义: 因为c++是面向对象的编程语言,当两个对象需要进行一系列的运算符操作时就不能像普通的数据类型一样进行简单的运算符操作,这时候就需要将运算符进行重载,让对象的成员变量按照意愿进行运算,这样才能使运算正确进行。全局函数、类成员函数方法实现运算符重载步骤:1)要承认操作符重载是一个函数,写出函数名称 opera...

2019-01-08 22:19:28 152

原创 c++类的友元函数

友元函数的意义有三点:1.友元类的声明:1.1两个独立的类A、B,在A中声明了友元类B,那么B类对象就可以访问A类的私有成员、私有函数1.2在B类中有内部类C,想要访问C或者对C进行的一系列操作都需要在类B中(C类外部)将C声明为友元函数2.友元函数的声明:将全局函数在类中声明成由友元函数,那么全局函数就可以访问A类的私有成员、私有函数#include <iostream>u...

2019-01-08 21:51:52 1155

原创 对象调用成员函数时原理剖析以及成员函数有const修饰的情况

在c++中和c语言中,对于const修饰的指针,const的位置不同,约束的内容也不一样:const int *p;const修饰的是指针p指向的内存空间(使这片空间的变量只拥有可读属性)int const *p;const修饰的是指针p的内存内容不可修改(不能用指针再传递其他变量)int * const p;const修饰的是指针p的内存地址不可更改(不能用指针再接受其他地址)在c...

2019-01-08 20:58:54 368

原创 c++中的内存分配(new)与释放(delete)和c中的内存分配(malloc)与释放(free)

c语言的操作符: malloc freec++的操作符: new delete 相同 和 不同的地方: new能执行类型构造函数 delete操作符能执行类的析构函数 而malloc和free不可以分配基础类型void main(){ int *p = (int *)malloc(sizeof(int));//给指针分配一块(int)大小的内存地址 *p = 10...

2019-01-07 22:34:41 2395

原创 c++构造函数的初始化列表

解决的问题1: 在B类中 组合了一个 A类对象 (A类设计了构造函数)(根据构造函数的调用规则 设计A的构造函数, 必须要用;但是没有机会初始化A)解决的问题2: 为const常量赋值(const常量需要在类中赋值,而静态成员变量需要在类的外部用作用域符(类型 类名::变量名=?)进行赋值)构造函数的初始化列表有严格的构造顺序和析构顺序:先执行 被组合对象的构造函数 (即构造对象A)(如果组合...

2019-01-07 22:18:24 629

原创 c++的构造函数

c++的类中包含以下三种构造函数:1.无参的构造函数 : 类名()2.有参的构造函数 : 类名(形参)有参构造函数的三种调用方法:2.1 括号法2.2 等号法2.3 手动的调用构造函数3.赋值构造函数 (作用:用一个对象初始化另外一个对象): 类名(const 类名& obj)赋值构造函数四种调用场景: 3.1 用一个对象去初始化另外一个对象(使用等号)3...

2019-01-07 22:04:31 152

原创 类的封装和访问控制

封装有2层含义:1 . 把属性和方法进行封装 (对成员变量和成员函数进行封装,就是把这两个放在类里面)2 . 对属性和方法进行访问控制(通过public、private、protected对成员函数和成员变量进行封装,以达到访问限制)public: 修饰的成员变量和函数 可以在类的内部和类的外部访问private: 修饰的成员变量和函数 只能在类的内部被访问,不能在类的外部访问pro...

2019-01-05 22:20:43 340

原创 函数指针的基础语法

函数指针的3个基础用法:1.声明一个函数类型2.声明一个函数指针类型3.定义一个函数指针变量#include "iostream"using namespace std;void myfunc(int a){ printf("a:%d \n", a);}void myfunc(char *p){

2019-01-05 22:01:16 279

原创 c++函数重载

当函数名相同时会出现调用歧义,所以这时候需要使用函数重载来避免调用歧义。但是函数重载有一定的标准,如下:#include "iostream"using namespace std;/* 函数重载的标准: 1.当相同函数名和不同的参数搭配在一起的时候,函数的意义是不一样的 2.当函数名称相同而参数不一样的时候(参数的个数、类型),这是函数的重载 3.返回值的类型不能作为函数重载的判断...

2019-01-05 21:32:17 107

转载 二级指针与指针的引用做函数参数

在“c++的引用”中已经介绍了一级指针(p)与引用(&p)做函数参数的使用情况(目的是为了将变量的地址传递给调用的函数),现在介绍一种更为复杂的情况。即函数参数是二级指针(**p)(指向指针的指针)与函数参数是指针的引用(&p)这两种情况(目的是为了将一级指针的地址传递给调用的函数)。#include "iostream"using namespace std;//定义类.

2019-01-05 20:58:04 826

原创 python的if、else、while、for

1.对于判断语句if—else—elif、循环语句for—while等,在python中,不像c++一样需要用{ }去包含子集;在python中使用冒号:开始,结合缩进符来包含子集2.在c++中,条件判断用()来包含;在python中取消了条件判断的括号直接在关键字之后 加一个空格符再添加判断语句3.c++中的bool值为true,python中True中的T应该大写4.与c++的for循环...

2019-01-04 13:54:22 454

原创 python的input与多行输出

1.python的注释问题:与c++不同的是,python单行注释用#号,而c++则使用//。python的多行注释前后用三个单引号’’’,而c++则使用/* …*/进行多行注释2.python的输入使用input()函数,并且更为方便的是可以直接在括号内添加字符串并自动输出,有一点需要注意的是,input读取的数据均以字符串格式保存在缓存区。对应的c++则可以使用 " cin>&gt...

2019-01-04 13:40:27 9072

原创 c++的引用

c++的引用就是相当于简化的指针传递地址的操作,在c语言中,我们需要创建指针:类型 *变量名=NULL;然后通过&符取地址传递给指针变量。而引用是简化了取地址这一步,创建一个引用:类型& 变量名=其他同类型变量,此时,其他变量的地址隐藏的传递给了引用变量。void main(){//引用的格式就是: 类型名称& 新的名称 = 原名

2019-01-04 13:02:04 147

原创 const与define的相同与不同

const与define的相同之处:定以后的变量是不允许在后续的程序代码中修改的,定义变量代替所定义的变量或数值const与define的不同之处:const是有作用域的,但是define是全局的#include "iostream"using namespace std;//const与define的相同之处,可以对变量设置定值#define b 20void main05(){...

2019-01-03 22:11:17 213

原创 c++三目运算符

三目运算符代替了if判断,更加简洁。并且在c++中,三目运算的结果即使是变量仍然可以做左值#include "iostream"using namespace std;void main(){ int a = 10, b = 20; (a > b ? a : b) = 30;//在c++中,三目运算符的结果即使是变量仍然可以做左值,并对其赋值。只是因为得到的是变量的内存地址 /...

2019-01-03 22:03:17 179

原创 c++的命名空间namespace

c++的命名空间使用是为了限制一些变量名或者函数只能在命名空间的范围类使用,避免重复的变量名使用混淆。犹如std一样,在std内的一些变量名或许和一些其他的命名空间内的变量名重复,但是使用 std::变量名 就可以与其他空间内的变量名进行区分#include "iostream"using namespace std;#include <string&

2019-01-03 21:48:42 104

原创 面向对象的c++

c++在c的基础之上最重要的就是增加了面向对象编程,而面向对象编程就目前我的理解来说就是使用class来产生类,并在类中可以有成员函数、成员变量。自定义类名(如下circle)就相当于int、float等类型,可由自定义类名创建新的对象,创建的对象可以调用类函数中的一些属性。#include "iostream" using namespace std;//面向对象的c++class ci...

2019-01-03 21:22:11 100

原创 c++的第一个程序

c++的头文件#include “iostream”、命名空间using namespace std、输出符cout<<、输入符cin>>#include "iostream" //包含c++的头文件using namespace std;//使用命名空间 std标准的命名空间(这个

2019-01-03 21:08:23 113

原创 python基础第一天之输出

python与c++的第一个hello world程序区别在于,c++直接用‘ cout<< ’或者printf(" 字符串%s ",字符串变量名)进行输出,而python则是用print(" 字符串 ",字符串变量名)进行输出。 c++示例如下: ``` #

2019-01-03 20:58:31 114

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除