自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青瓦松

带着技术走天涯

  • 博客(42)
  • 收藏
  • 关注

原创 C++:异常详解

C++:异常详解一、异常基本概念异常处理:一句话,就是处理程序中的错误。所谓错误是指程序在运行过程中发生的一些异常事件(如:除0溢出、数组下标越界、空指针、内存不足、所读取文件不存在等)。二、C语言异常解决方式1、错误标识方法:a、以整型返回值标识错误;b、以errno宏标识错误2、缺陷:a、返回值不一致的问题。有的函数以返回1标识成功,而有的函数又以返回0标识成功; b、函数返回值仅有一个,通过函数返回值标识错误代码,函数不能返回其他值。三、C++...

2020-12-17 16:07:13 995 2

原创 C++:类型转换

C++:类型转换一、静态类型转换(static_cast)主要用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换语法:static_cast<target_type>(source object)1、支持内置数值类型间的转换#include <iostream>using namespace std;int main(){ char a = 'a'; double b = (double) a; // 支持内置数值类型间的转换 /.

2020-12-17 10:25:53 180

原创 C++:类模板应用-数组类封装

C++:类模板应用-数组类封装1、数组封装代码/*开发环境:vs2013代码文件名:类模板应用-数组类封装.hpp*/#pragma once#include <iostream>#include <string>using namespace std;template<class ELEMENTTYPE>class userArray{private: ELEMENTTYPE* parr; int capacity; int s

2020-12-16 17:09:11 292

原创 C++:类模板详解

C++:类模板四、类模板1、类模板不可使用自行类型推导,须显式指定类型2、类模板可有默认类型参数#include <iostream>#include <string>using namespace std;// AGETYPE = int: 指定AGETYPE默认类型参数为inttemplate <class NAMETYPE, class AGETYPE=int>class Person{private: NAMETYPE name

2020-12-16 16:28:05 917 1

原创 C++:函数模板详解

C++:模板一、函数模板#include <iostream>using namespace std;// 利用模板实现通用交换函数// T代表通用的数据类型,告诉编译器下面紧跟着的函数出现T不要报错。template <class T>void userSwap(T& var01, T& var02){ T tmp = var01; var01 = var02; var02 = tmp;}/*模板函数调用方式: 1、自

2020-12-15 16:31:28 202

原创 C++:实现char类型和int类型数据数组排序

C++:实现char类型和int类型数据数组排序#include <iostream>#include <cstring>using namespace std;template<class TYPE>void userSwap(TYPE& var1, TYPE& var2){ TYPE tmp = var1; var1 = var2; var2 = tmp;}template<class TYPE&g

2020-12-15 15:49:46 728

原创 C++:虚析构和纯虚析构

C++:虚析构和纯虚析构一、虚析构 -若子类中存在指向堆区的属性,须利用虚析构技术(将父类析构函数写成虚函数),在delete时,才会调用子类的析构函数。#include <iostream>#include <string>using namespace std;class Animal{public: Animal() { cout<<"Animal默认构造函数调用"<<endl; } // 虚析构.

2020-12-14 15:45:05 588 1

原创 C++:抽象类

C++:抽象类定义:一个包含有纯虚函数的类,称为抽象类。特点:a、抽象类不能进行对象实例化;b、继承了抽象类的子类须重写父类中的纯虚函数,否则亦为抽象类;#include <iostream>using namespace std;// 程序设计原则:开闭原则 - 对扩展进行开放,对修改进行关闭。class AbstractCalculator{public: int var01; int var02;public: virtual

2020-12-14 15:04:46 591

原创 C++:多态

C++:多态一、基本概念1、静态多态(编译多态):函数重载和运算符重载2、动态多态(运行多态):派生类和虚函数3、静态多态和动态多态的区别函数地址早绑定(静态联编)还是晚绑定(动态联编)。二、静态联编#include <iostream>using namespace std;class Animal{public: void speak() { cout << "动物在说话" << endl; }};clas

2020-12-12 12:05:04 99

原创 C++:多继承

C++:多继承一、多继承语法:class Son : public Base1, public Base2{};*** 不建议使用多继承***#include <iostream>using namespace std;class Base01{public: int m_A;private: int m_B;public: Base01() { m_A = 10; m_B = 20; }}

2020-12-10 13:26:57 173

原创 C++:继承中同名成员处理方式

C++:继承中同名成员处理方式1、继承中的同名成员属性a、若子类和父类中存在同名属性,调用该属性时优先调用子类中该属性;b、若须调用父类中的同名属性,须加上父类作用域。#include <iostream>using namespace std;class Base{public: int var;public: Base() { this->var = 10; }};class Son: public B

2020-12-09 15:54:29 640

原创 C++:继承中的构造函数和析构函数

C++:继承中的构造函数和析构函数1、继承中构造函数和析构函数调用顺序a、调用父类构造函数;b、调用其他成员的构造函数;c、调用子类构造函数;d、析构调用顺序相反。#include <iostream>using namespace std;class Base{public: Base() { cout<<"Base中的默认构造函数调用"<<endl; } ~Base() { cout<<"Base中的析

2020-12-09 13:26:36 1942

原创 C++:继承

C++:继承一、继承基础1、语法 - class 子类: 继承方式 父类class Subclass: public Base{ ... // 主体};2、继承方式 a、父类的所有属性(公共、保护、私有)子类均会继承一份,父类私有属性被编译器隐藏了,子类中无法访问; b、若子类继承方式为public,子类继承父类的属性不发生改变; c、若子类继承方式为protected,子类继承父类的属性中所有public和protected属性都变为protected; d、若子

2020-12-09 11:24:49 65

原创 C++:字符串封装

C++:字符串封装编译器:vs20131、头文件代码(MyString.h)// file name:MyString.h#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <string>#include <cassert>using namespace std;class MyString{ // << operator overloaded friend

2020-12-09 10:28:07 183

原创 C++:关系运算符重载及函数调用运算符调用

C++:关系运算符重载#include <iostream>#include <string>using namespace std;class Person{ public: Person(){}; explicit Person(const string name, const int age) { this->name = name; this->age = age; } bool operator==(co

2020-12-08 15:04:40 1176

原创 C++:赋值运载符重载

C++:赋值运载符重载#include <iostream>#include <cstring>using namespace std;class Person{private: char* name; int age;public: Person(){}; Person(const char* name, int age) // 有参构造函数 { this->name = new char[strlen(name)+1]; // 在堆区开辟内

2020-12-08 14:29:02 112

原创 C++:智能指针

C++:智能指针#include <iostream>#include <string>using namespace std;class Person{public: Person(){}; Person(string name, int age) { this->name = name; this->age = age; }; void show() { cout<<"姓名:"<<this->

2020-12-07 16:14:16 52

原创 C++:运算符重载

C++:运算符重载一、+号运算符重载#include <iostream>#include <string>using namespace std;class Person{ friend Person operator+(const Person& p1, const Person& p2);public: Person(){}; Person(int var1, int var2): m_var01(var1), m_

2020-12-07 15:52:36 90

原创 C++:数组的封装

C++:数组的封装#include <iostream>#include <string>using namespace std;class Array{public: explicit Array(const int& capacity) { this->capacity = capacity; this->size = 0; this->pArr = new int[this->capacity]; } A

2020-12-07 13:40:39 314

原创 C++:友元

#include <iostream>#include <string>using namespace std;class Building;class GoodGay{public: GoodGay(); void visit01(); private: Building* building;};class Building{ // 1、利用friend关键字让全局函数作为Building类的友元,可以访问本类私有属性。 friend v.

2020-12-07 13:34:20 352

原创 C++:常函数和常对象

#include <iostream>#include <string>using namespace std;class Person{public: Person(int age, float score) { this->age = age; this->score = score; } // 常函数:修饰成员函数中的this指针,使this指针指向的值也不可修改。 // 常函数在函数声明和函数定义时都须加上const关键字。 .

2020-12-07 11:31:52 331

原创 C++:空指针访问成员函数

#include <iostream>#include <string>using namespace std;/*1、若成员函数中未使用到成员变量,可使用空指针调用该成员函数;2、若成员函数中使用了成员变量,须对this进行判空操作,以防止程序崩溃。*/class Person{public: void showClass() { cout<<"The class name is Person"<<endl; } vo.

2020-12-07 11:05:52 258

原创 C++:this关键字指针

#include <iostream>#include <string>using namespace std;/*1、this指针:指向被调用的成员函数所属的对象。2、this指针只能在非静态成员函数中使用,全局函数、静态成员函数中均不能使用。3、this指针在成员函数开始执行前构造,在成员函数执行完后清除。4、this指针类型由this指针的成员函数类型及对象类型共同决定。假设类的类型为Person, 若该类中的一个成员函数:const int func0.

2020-12-07 10:55:45 134

原创 C++:面向对象模型初探

#include <iostream>#include <string>using namespace std;/*1、空类的sizeof是1。原因:每个对象在内存上都应有独一无二的地址,因此给空对象分配一个字节的空间。2、类中成员变量和成员函数分开存储。仅非静态成员变量存储在类中,成员函数、静态成员变量、静态成员函数单独存储。类的所占空间字节数按非静态成员变量字节对齐规则计算。3、除属于类对象的非静态成员变量在内存中有多份,成员函数、静态成员变量、静态成员函数有且仅.

2020-12-07 10:45:29 94

原创 C++:单例模式

#include <iostream>#include <string>using namespace std;/*单例模式:1、通过一个类只能实例化一个对象;2、私有化默认构造函数、拷贝构造函数及唯一实例指针;3、对外提供getInstance接口,返回实例指针*/class ChairMan{public: // 提供对外接口,返回实例指针 static ChairMan* getInstance() { return singleman;.

2020-12-07 10:32:15 82

原创 C++:静态成员

C++:静态成员#include <iostream>#include <string>using namespace std;class Person{public: /* 一、静态成员变量: 1、为类属性,该类对象共享该成员对象数据; 2、在编译阶段就分配了内存; 3、类内声明,类外初始化化; */ static int m_var; // 公有静态成员变量 int m_var01; /* 二、静态成员函数 1、所有对象都共享同

2020-12-07 09:31:23 91

原创 C++:动态内存开辟和释放(new和delete)

#include <iostream>#include <string>using namespace std;class Person{ public: Person() { cout<<"Person默认构造函数调用"<<endl; } Person(string iname):name(iname) { ...

2020-12-06 09:19:53 794

原创 C++:类对象作为类成员

#include <iostream>#include <string>using namespace std;class Game{ public: // explicit:防止利用隐式类型转换方式来构造对象。 explicit Game(string iname) { name = iname; cout<<"Game::Game(string iname)"<<endl; } ~Game() { .

2020-12-03 16:35:27 208

原创 C++:构造函数和析构函数

#include <iostream>#include <string>using namespace std;/****************************************************************************************一、构造函数 1、构造函数作用:初始化对象成员。 2、函数名与类名相同;没有返回值,不用写void。 3、可以有参数、可以发生重载 4、在对象创立时,由编译器自动调用一次,无须手.

2020-12-03 16:04:17 1162

原创 C++:封装

C++:封装一、封装的定义 -隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。函数是封装的一种形式:函数所执行的细节行为被封装在函数体内,被封装的元素隐藏了其实现细节,可调用函数但不可访问函数内部语句。二、访问权限符1、public(共有):类外可以访问;2、private(私有):类外不可访问,继承类亦不可访问;3、protected(保护):类外不可访问,继承类可访问。4、作用范围:在该类作用域内,一个访问权限符出现位置起到..

2020-12-03 10:59:54 648

原创 C++:extern c浅析

C++:extern c浅析一、C++编译1、C++支持函数重载,为避免函数重名,在编译过程中须重命名,导致调用c语言的函数会链接失败,如下(具体编译须看编译器,在此仅举例说明):void print(int var) -> _print_intvoid print(char var) -> _print_char2、C语言中,编译过程中函数名无须重命名。二、C++中调用C语言库函数1、方法一:在C++中解决 - 假设C函数库test.h中存在函数void Show(

2020-12-03 10:41:51 159

原创 C++:函数重载详解

C++:函数重载 C++:函数重载一、函数重载定义- 同一作用域空间中,定义多个同名函数,该系列同名函数函数形参须或类型或个数或顺序不同。1、函数形参个数、类型、顺序三者中须至少一个不同a、函数形参个数不同:int Max(int var1, int var2);int Max(int var1, int var2, int var3);b、函数形参类型不同:int Add(int var1, int var2);float Add(float var...

2020-12-03 10:30:45 156

原创 C++:函数默认参数及占位参数

C++:函数默认参数及占位参数一、默认参数1、函数的默认参数在参数列表中须靠右写;2、函数声明与函数定义中仅须一个有默认参数。通常在声明中给定默认参数值。二、占位参数 —符号重载时有用1、占位参数只有参数类型声明,而没有参数名声明int add(int num1, int num2, int);2、占位参数也可以有默认值。int add(int num1, num2, int =1);...

2020-12-03 10:20:30 213

原创 C++:内联函数

C++:内联函数一、函数宏的缺陷1、为保证运算完整性,须加括号。#define MAX(x, y) ((x)>(y) ? (x) : (y))2、即使加了括号,有些情况也与预期结果不符。#include <iostream>using namespace std;#define MAX(x, y) ((x)>(y) ? (x) : (y))int main(){ int i = 10; int j = 20; int .

2020-12-03 10:09:05 223 2

原创 C++:引用详解

C++:引用详解一、引用简说1、引用:对地址(变量)取别名,对引用的操作与对原变量的直接操作效果完全一样。注意与指针的区别。2、声明方法:类别标识符 &引用名 = 目标变量名3、声明引用时,必须同时对其初始化。4、引用声明一旦初始化,不能再将该引用名作为别的引用名的别名。5、对引用名求地址,就是对目标变量求地址,即&r_var与&var相等。6、不能建立数组的引用。#include <iostream>using namespace s

2020-11-17 13:49:10 1293

原创 C++:对C语言的增强详解

C++:对C语言的增强一、全局变量增强C语言:1、仅有一个全局作用域,标识符之间可能发生冲突; 2、同一变量可重复定义。C++ :1、namespace命名空间将全局作用域(默认命名空间)分为不同部分,可有效避免标识符冲突,且命名空间可以相互嵌套; 2、变量不可重复定义int main(){ int var; int var = 1; // 在c语言中可以存在重复定义,但在c++中不行}C++标准为了和C区...

2020-11-11 17:43:54 219

原创 C++:using关键字详解

C++:using关键字一、using声明1、命名空间中变量调用方式:#include <iostream>using namespace std;namespace A // 声明命名空间A{ int paramx = 20; int paramy = 30; void fun01() { cout<<"Hello func01"<<endl; } void fun02() { cout<<"Hello func0

2020-11-09 17:14:15 931

原创 C++:namespace命名空间详解

C++:namespace命名空间1、命名空间的主要用途:解决命名冲突。#include <iostream>using namespace std;// 定义两个全局变量var01、var02int var01 = 1; int var02 = 2;// 定义命名空间Anamespace A{ int var01 = 10; int var02 = 20;}定义命名空间Bnamespace B{ int var01 = 100;.

2020-11-06 16:20:09 725

原创 C++:双冒号(::)作用域运算符

C++:双冒号(::)作用域运算符#include <iostream>using namespace std;int a = 1000;void test01(void){ int a = 2000; cout<<"(局部变量)a = "<<a<<endl; // 作用域::变量名 // 若跟作用域名,则此时变量应为该作用域下的变量。 std::cout<<"(全局变量)a = "<<::a<<

2020-11-06 15:24:00 186

原创 C++:第一个程序

第一个程序(C++)// iostream: 标准输入输出流 i - input 输入 o - output 输出 stream 流 相当于stdio.h// 注意:C++ 标准库名不须带后缀.h。#include <iostream>using namespace std; // 使用标准命名空间。std是命名空间,包含cin、cout。int main(){ // cout 标准输出流对象 // c语言中,<<表示二进制左移运算符,C++中在cout后用于

2020-11-06 15:14:00 229

空空如也

空空如也

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

TA关注的人

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