![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
菠萝小笨笨
优秀不够,你是否无可替代!
展开
-
运算符重载
运算符重载: 当运算符作用于类类型的运算对象时, 可以通过运算符重载重新定义该运算符的含义。 重载的运算符是具有特殊名字的函数: 它们由关键字operator和其后要定义的运算符号共同组成。 和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。 运算符重载的定义:返回类型 operator运算符号(形参列表){ 函数体} ...原创 2018-06-27 16:10:52 · 734 阅读 · 0 评论 -
C++类——赋值兼容原则
赋值兼容规则: 是指在需要基类对象的任何地方, 都可以使用公有派生类对象来替代。 通过公有继承, 派生类得到了基类中除构造函数、析构函数外的所有成员。 这样,公有派生类实际就具备了基类的所有功能, 凡是基类能解决的问题, 公有派生类都可以解决。 赋值兼容原则中的替代主要包括以下情况:派生类的对象可以赋值给基类对象。派生类的对象可以初始化基类的引用。派生类对象的...原创 2018-07-11 15:52:56 · 1593 阅读 · 0 评论 -
C++类——派生类的构造函数与析构函数
类的构造函数 每个类都分别定义了它的对象被初始化的方式, 类通过一个或几个特殊的成员函数来控制器对象的初始化过程, 这些函数叫做构造函数。 构造函数的任务是初始化对象的数据成员, 无论何时只要类的对象被创建, 就会执行构造函数。默认构造函数 默认构造函数是在未提供显式初始值时, 用来创建对象的构造函数。 注意: 当且仅当没有定义任何构造函数时, 编译器...原创 2018-07-11 17:10:32 · 1362 阅读 · 1 评论 -
C++类——派生类中的static关键字用法
静态数据成员的初始化格式为:数据类型 类名::静态数据成员名 = 值; 注意:基类定义的静态成员, 将被所有的派生类共享。静态数据成员在程序中只有一份拷贝, 由该类型的所有对象共享访问。静态数据成员和普通数据成员一样遵从访问控制原则。 静态成员函数:static 返回类型 函数名(参数列表){函数体} 注意:出现在类体外的函数定义不能指定...原创 2018-07-11 17:29:18 · 933 阅读 · 0 评论 -
C++类——多继承
多继承的概念: 如果一个派生类从多个基类继承, 则称为多继承。多继承的声明:class 派生类名:访问控制 基类名1, 访问控制 基类名2, ...{成员列表}注意:多个基类的派生类的构造函数执行的顺序与单继承的情况类似,执行顺序取决于定义派生类时指定的继承基类的顺序。一个派生类对象拥有多个基类的成员。 不同名成员访问不会出现二义性; 如果不同的基类拥有...原创 2018-07-11 19:29:28 · 6609 阅读 · 0 评论 -
C++类——虚继承
如果一个派生类从多个基类派生, 而这些基类又有一个共同的基类, 则在对该基类中声明的名字进行访问时, 可能产生二义性。![这里写图片描述](https://img-blog.csdn.net/20180711194459451?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9rdW56aGFuZw==/font/5a6L5L2T...原创 2018-07-11 19:47:40 · 507 阅读 · 0 评论 -
C++类——多态(概念、实现、理论基础、实现原理、条件与作用)
多态的概念 多态: 同样的调用语句有多种不同的表现形态, 即根据实际的对象类型决定函数调用语句的具体调用目标。如果父类指针(引用)指向的是父类对象则调用父类中定义的函数。如果父类指针(引用)指向的是子类对象则调用子类中定义的重写函数。 多态的实现 通过virtual关键字, 来修饰成员函数, 则该成员函数为虚函数。 虚函数允许派生类重新定义成员函数...原创 2018-07-12 13:50:51 · 703 阅读 · 0 评论 -
C++中区分概念重载、重写和重定义
重载: 在同一作用域下, 函数名相同, 但是参数列表不同。重写: 分别在基类和派生类中(在不同作用域下), 函数名相同,参数相同, 返回类型相同, 并且基类函数必须为虚函数。重定义: 分别在基类和派生类中(在不同作用域下), 函数名相同,不构成重写的话则为重定义(参数列表可相同可不同)。#include<iostream>using na...原创 2018-07-12 13:56:24 · 405 阅读 · 0 评论 -
C++类——纯虚函数与抽象类
纯虚函数定义: 纯虚函数是一种特殊的虚函数。 在许多情况下, 在基类中不能对虚函数给出有意义的实现, 这时可以把它声明为纯虚函数, 它的实现留给该基类的派生类去做。作用: 作为派生类中的成员函数的基础, 并实现多态性。形式:virtual 返回类型 函数名(形式参数列表) = 0;抽象类定义: 包含纯虚函数的基类称...原创 2018-07-12 14:19:42 · 327 阅读 · 1 评论 -
C++类——派生类的定义、构成及访问控制
面向对象程序设计 面向对象程序设计(OOP)的核心思想是数据抽象、 继承和动态绑定。使用数据抽象, 我们可以将类的接口与实现分离(封装)。使用继承, 我们可以定义相似的类型并对其相似关系建模。使用动态绑定, 可以在一定程度上忽略相似类型的区别, 而以统 一的方式使用它们的对象(多态)类之间的关系 类之间的三种关系:包含关系(has-A)class B{...原创 2018-07-11 11:11:24 · 42226 阅读 · 5 评论 -
C++中的分离式编译
随着程序越来越复杂, 我们希望把程序的各个部分分别存储在不同的文件中。 我们可以将原来的程序分成三个部分:头文件: 包含结构声明和使用这些结构的函数的原型。#pragma once#ifndef GAME_H_#define GAME_H_#include<string>using namespace std;struct Game...原创 2018-07-10 17:38:19 · 996 阅读 · 0 评论 -
C++函数——参数传递
参数传递形参的类型决定了形参和实参的交互方式。如果形参是引用类型, 它将绑定到对应的实参上 (传引用参数); 否则, 将实参的值拷贝后赋给形参(传值参数)。传值参数 传值参数有2种方式:将实参的实际值复制给函数的形参。 在这种情况下,修改函数内的形参对实参没有影响。#include&amp;amp;lt;iostream&amp;amp;gt;#include&amp;amp;lt;string&amp原创 2018-07-09 20:48:42 · 205 阅读 · 0 评论 -
C++函数——const形参和实参
顶层const: 表示任意的对象是常量。 底层const: 与指针和引用等复合类型有关。 对指针而言, 顶层const表示指针本身是个常量, 而底层const表示指针所指的对象是一个常量。int i = 22;const int ci = 20; //顶层const, 不能修改ci的值const int *p1= &amp;ci; //底层const, 允...原创 2018-07-09 21:09:33 · 11093 阅读 · 2 评论 -
C++函数——默认实参
默认实参: 某些函数有这样一种形参, 在函数的很多次调用中它们都被赋予一个相同的值, 我们把这个反复出现的值称为函数的默认实参。 调用含有默认实参的函数时, 可以包含该实参, 也可以省略该实参。 对于有多个形参的函数, 必须从右向左添加默认值。#include<iostream>#include<string>using name...原创 2018-07-09 21:25:17 · 1319 阅读 · 0 评论 -
C++函数——返回类型
无返回值函数: 没有返回值的return语句只能用在返回类型是void的函数中。 有返回值函数: return语句的第二种形式提供了函数的结果。 只要函数的返回类型不是void, 则该函数内的每条return语句必须返回一个值。 返回一个值的方式和初始化一个变量或形参的方式完全一样: 返回的值用于初始化调用点的一个临时量, 该临时量就是函数调用的结果。 返回引...原创 2018-07-09 21:50:37 · 5498 阅读 · 0 评论 -
C++函数——递归函数、内联函数、constexpr函数
递归函数 直接或间接调用自己的函数称为递归函数。 递归函数的要求: 递归函数必须定义一个终止条件, 否则,函数将永远递归下去。#include<iostream>using namespace std;long fact(int i);int main(){ int num; cout << "请输入一个小于8的正整数...原创 2018-07-09 22:27:16 · 1132 阅读 · 0 评论 -
C++函数——函数重载
如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。void print(const char *cp);void print(const int *beg, const int *end);void print(const int ia[], size_t size); 这些函数接受的形参类型不一样, 但是执行的操作非常类似。 当调用这些函数时, 编译...原创 2018-07-09 22:42:57 · 213 阅读 · 0 评论 -
C++函数——函数和复杂类型(数组、结构体、string对象)
函数与数组 数组作为参数: int sum_arr(int arr[], int n); arr是数组名, 但arr实际上并不是数组, 而是一个指针, 指向数组的第一个元素。 但是在编写函数的其余部分时,可以将arr看作是数组。 当且仅当用于函数头或函数原型中, int *arr和int arr[]的含义才是相同的。 它们都意味着arr是一个int指针。 然而, 数组...原创 2018-07-10 16:20:21 · 633 阅读 · 0 评论 -
C++函数——函数指针
与数据项类似, 函数也有地址。 函数的地址是存储其机器语言代码内存的开始地址。 可以将地址作为函数的参数,从而使第一个函数能够找到第二个函数, 并运行它。 函数指针指向的是函数而非对象。 想要声明一个可以指向函数的指针, 只需要用指针替换函数名即可。bool lengthCompare(const string &amp;, const string &amp;...原创 2018-07-10 16:26:54 · 220 阅读 · 0 评论 -
C++函数模板与类模板
模板定义: 模板就是实现代码重用机制的一种工具, 它可以实现类型参数化, 即把类型定义为参数, 从而实现了真正的代码可重用性。分类: 函数模板、 类模板。作用: 模板用于表达逻辑结构相同, 但具体数据元素类型不同的数据对象的通用行为。理解(对比函数重载): 重载函数: 如果同一作用域内的几个函数名字相同但形...原创 2018-07-12 16:16:42 · 1148 阅读 · 0 评论