C++基本知识
文章平均质量分 52
下忍
我希望可以记录程序道路上的一点一滴。
展开
-
C++ 结构体
文章概述结构体的定义;定义结构体变量的几种方式;访问结构体变量以及结构体变量赋值;定义结构体变量,编译器会分配多大内存的空间。结构体的定义a. 结构体出现的背景 为了表示一些复杂的数据,普通的基本变量无法满足需求。 b. 结构体:表示不同类型变量的集合。通常将一组密切相关的信息组合起来表示一个对象。 c. struct用来声明一个结构体的类型。结构体中的变量...原创 2018-07-11 10:04:12 · 5428 阅读 · 1 评论 -
C++ 类(多继承和虚继承)
文章概述多继承的定义以及多继承的语法;虚继承;多继承的定义以及多继承的语法a. 一个类有多个基类,这样的继承关系称为多继承; b. 多继承声明语法:class 派生类名: 访问控制符 基类名1,访问控制符 基类名2 { 数据成员和成员函数声明; }class A: public B,public c{}图示: c. 多个直接基类构造函数...原创 2018-07-29 16:00:46 · 24141 阅读 · 5 评论 -
C++ 类(深拷贝和浅拷贝)
文章概述1.浅拷贝和深拷贝 上一篇文章中,我们提到必要的时候必须手动的写拷贝构造函数。那什么是必要的时候,我们这篇文章分析。浅拷贝和深拷贝我们首先要知道默认拷贝构造函数可以完成对象的数据成员简单的复制,这也称为浅拷贝。对象的数据资源是由指针指向的堆时,默认的拷贝构造函数只是将指针复制。 a. 我们首先分析下面的代码为什么会出错??class Test{private:...原创 2018-07-21 00:24:41 · 22712 阅读 · 3 评论 -
C++ 类(多态(1))
文章概述1.多态出现的背景(赋值兼容性原则遇上函数重写); 2.多态理论联系实际; 3.多态成立的3个条件; 4.多态的理论基础; 5.多态的C++实现以及多态的实现效果; 6.虚析构函数;多态出现的背景(赋值兼容性原则遇上函数重写)a. 函数重写: 子类中定义与父类原型相同的函数;函数重写发生在父类与子类之间。 b. 如果子类中定义了与父类中原型相同的函数会发生什么?...原创 2018-07-29 17:25:29 · 1158 阅读 · 0 评论 -
C++ 引用
文章概述引用的定义以及格式引用的初始化引用的本质函数的返回值是引用指针的引用以及常量引用引用的定义以及格式a. 引用的定义: 对已定义的变量起的别名。定义引用的时候,必须绑定已定义好的变量。 b. 引用的格式: Type & name =var(已经定义好的变量);int a =10;int&b =a;普通引用必须和绑定的对象的类型相同...原创 2018-07-15 23:52:10 · 279 阅读 · 0 评论 -
C++ 类(构造函数的成员初始化列表)
文章概述构造函数的成员初始化列表构造函数的成员初始化列表下面的代码分析了什么时候使用成员初始化列表:class A{ private: int a; public: A(int a) { this->a = a; } int getA() { re...原创 2018-07-21 13:29:52 · 6667 阅读 · 1 评论 -
C++ 类(new和delete运算符)
文章概述new和delete运算符new和delete运算符a. new/delete 是C++的运算符;类似于malloc/free,程序运行(动态)得开辟内存空间(堆); b. new 可以为内置类型的变量开辟空间,数组变量,类的对象开辟空间。这是在堆上开辟内存,返回一个指向该内存空间的地址。内置类型开辟空间//开辟内存并且初始化int *a = new...原创 2018-07-21 14:32:25 · 13617 阅读 · 2 评论 -
C++ 类(静态成员和静态函数)
文章概述静态成员变量静态成员函数class A{ public: static int x; public: static void Func(){}}int A::x=10;静态成员变量a. 关键字static用于说明一个类的成员变量时,该成员为静态成员。静态成员提供了一个同类对象的共享机制; b. 把一个类的成员说明为static时,该类无...原创 2018-07-21 15:01:46 · 13238 阅读 · 1 评论 -
C++ 类(多态(2))
文章概述1.重载,重写,重定义; 2.多态的原理; 3.证明vptr指针的存在; 4.构造函数中调用虚函数,能实现多态吗? 5.父类指针步长是否和子类指针步长一样?...原创 2018-07-29 21:57:55 · 264 阅读 · 0 评论 -
C++ 类(面向对象初探)
文章概述我们需要解决这几个问题: a. C++类对象中的成员变量和成员函数是一起存储的吗?如果不是? b. C++编译器如何管理类和对象,具体的说就是对象调用类中的方法,C++编译器是如何区分哪个具体的对象调用哪个成员方法的?C++类对象中的成员变量和成员函数是一起存储的吗?如果不是?我们应该知道C++有两种成员数据: static,nostatic; 三种成员函数: stat...原创 2018-07-21 15:34:59 · 482 阅读 · 0 评论 -
C++ 类(const修饰普通成员函数)
文章概述const修饰普通成员函数全局函数和成员函数const修饰普通成员函数我们知道this指针指向的是具体的对象,普通的成员函数存在(加深记忆),设计this指针的时候格式为*const this(常量指针)。我们看下面的代码://对于这个普通的成员函数const其实放在下面的这3个地方都没有关系的//但是一般放在(3)(1)void (2)func(int x)...原创 2018-07-21 16:23:15 · 5454 阅读 · 3 评论 -
C++ 类(继承中的构造和析构)
文章概述类型(赋值)兼容性原则;类型(赋值)兼容性原则可以分为2个情况;继承中的对象模型(内存模型);继承中的构造析构调用原则;继承和组合混搭下的构造和析构;继承中同名的成员函数和成员变量处理方法;继承中的static关键字类型(赋值)兼容性原则a. 类型(赋值)兼容性原则的说明: 需要基类对象的任何地方,都可以用公有派生类对象代替。通过公有继承,派生类得到了基类中...原创 2018-07-29 14:41:45 · 17270 阅读 · 5 评论 -
C++ 类(构造函数和析构函数)
文章概述构造函数和析构函数的由来?构造函数和析构函数的基本语法C++编译器构造析构方案 PK 对象显示初始化方案构造函数的分类以及调用默认的构造函数构造函数调用规则构造函数和析构函数的总结构造函数和析构函数的由来类的数据成员不能在类的声明时候初始化,为了解决这个问题? 使用构造函数处理对对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用它,而...原创 2018-07-20 19:00:51 · 50060 阅读 · 4 评论 -
C++ 类(继承的基础知识)
文章概述类之间的关系;继承的基础知识;派生类的语法定义;继承的重要说明;派生类的访问控制;派生类访问控制的结论;类之间的关系1.包含关系: A类中的一个数据成员是B类。 2. User关系: A类部分使用B类。通过类之间的成员函数的相互关系。定义友元函数或者对象参数传递实现。 3. 继承关系: 具有传递性,不具有对称性。 继承的基础知识a...原创 2018-07-29 12:53:54 · 35624 阅读 · 2 评论 -
C++ 枚举类型和共用体类型
文章概述我们主要学习的是: 1. 枚举类型; 2. 共用体类型;枚举类型a. 枚举类型的定义以及枚举类型的格式? 枚举类型提供了一组常量的集合。 C++中可以使用关键字enum定义枚举类型,下面是枚举类型的格式://enum 枚举类型名 {常量1,常量2,常量3,常量4...}enum date{Mon,Two,Three,Four};b. 定义枚...原创 2018-07-11 11:07:50 · 604 阅读 · 0 评论 -
C++ 类(经典案例)
文章概述本篇文章主要是通过两个经典案例熟悉运算符重载以及自己实现数组类; 初始化的时候可以用NULL,但是赋值的时候不可以的。实现数组类需求: a.能够设置数组的元素 b. 用一个对象初始化另一个对象 c.获取元素//a.能够设置数组的元素 b. 用一个对象初始化另一个对象 c.获取元素class Array{private: //表示的数组的首地址...原创 2018-07-23 13:48:36 · 15421 阅读 · 0 评论 -
C++ 常量和const
文章概述C++中的常量const的说明const的引用4. C++中常量a. 常量: 其值在程序运行的过程中不会发生改变,但是定义常量的时候可以设置初始值。 C++中使用const关键字来定义一个常量。//a是常量const int a=10;b. 对于常量,编译器会将其放在一个只读的内存区域,其值不能发生改变。 c. 使用常量的好处就在于灵活,程序中多次用...原创 2018-07-12 14:57:57 · 13809 阅读 · 1 评论 -
C++ const的引用
文章概述常量引用的定义常量引用初始化以及分析常量引用常量引用的定义a. 常量引用 : 将引用绑定到const对象上(其实就是对const的引用)。//常量引用的格式:const int &a。const int & a = 10;b. 常量引用表示不能通过引用改变绑定对象的值,但是对象的值可以通过别的方式改变。 int a = ...原创 2018-07-12 15:29:38 · 7118 阅读 · 1 评论 -
C++ 指针和const
文章概述指向常量的指针常量指针顶层const和底层const指向常量的指针a. 指向常量的指针通过实例说明://其中b就是指向常量的指针const int a = 10;const int*b =&a; b. 指向常量的指针表示的是不能通过指针改变指针所指向的对象,并没有规定指向的对象是否是常量和指向的对象不能通过别的途径改变。int a =...原创 2018-07-12 16:34:40 · 274 阅读 · 0 评论 -
C++ 类(友元函数和友元类)
文章概述1.友元函数 2.友元类 我们知道类的私有属性只能在类的内部访问, 能不能通过一种途径可以在类的外部访问? 答案是有的,友元函数。友元函数a. 友元函数的作用: 可以在类的外部访问类的私有属性,但是会破坏类的封装。 b. 友元函数的格式: friend 函数返回类型 函数名(参数列表)。 c. 友元函数声明的位置和类访问修饰符无关。//对象的成员必须初始化...原创 2018-07-19 16:56:20 · 3768 阅读 · 0 评论 -
C++ 类(运算符重载(1))
文章概述运算符重载出现的原因运算符重载的定义以及好处运算符重载的本质运算符重载的语法使用成员或者友元函数重载运算符的特点运算符重载出现的原因C++编译器知道内置类型如何进行计算,但是默认情况下不知道自定义数据类型是如何进行计算的。C++编译器为程序员提供了一种机制让自定义数据类型有机会进行运算符操作。这种机制就是运算符重载。运算符重载的定义以及好处a. 运算...原创 2018-07-19 17:46:40 · 962 阅读 · 0 评论 -
C++ 类(运算符重载(2))
文章概述定义运算符重载的步骤使用成员函数和友元函数重载二元运算符使用成员函数和友元函数重载一元运算符上一篇,我们已经熟悉重载运算符的理论知识,这篇主要是实际操作(代码)。定义运算符重载的步骤a.我们首先要知道根据操作数的个数将运算符分为一元运算符和二元运算符。 b.定义运算符重载的步骤:明白运算符重载是一个函数,写出函数名称。(函数名称: operator+运算...原创 2018-07-19 19:43:26 · 526 阅读 · 0 评论 -
C++ 类(运算符重载(3))
文章概述重载左移操作符和右移操作符重载等号操作符重载左移操作符和右移操作符a. 我们首先知道<<,>>的顺序是从左往右执行的。int a=2;//cout<<a; cout<<endl;cout<<a<<endl;b. 代码:重载<<运算符class Test{原创 2018-07-20 11:20:26 · 2221 阅读 · 0 评论 -
C++ 类(封装和访问控制)
文章概述类,对象,成员变量,成员函数的基本概念面向对象的3大概念以及类的封装访问修饰符struct和class的区别类,对象,成员变量,成员函数的基本概念a. 类: 以面向对象的方式开发应用程序时,将遇到的各种事物抽象成类。用户通过实例化类的方式访问类中的数据和成员。 b. 对象: 类的实例。 c. 成员变量: 类中定义的变量。也称为属性。 d. 成员函数: 类中定...原创 2018-07-20 16:29:36 · 336 阅读 · 0 评论 -
C++ 类(纯虚函数和抽象类)
文章概述纯虚函数和抽象类的基本概念;抽象类案例;抽象类在多继承中的应用以及工程中的多继承;多继承的应用场景 纯虚函数和抽象类的基本概念a. 纯虚函数是一个在基类中只有声明的虚函数,在基类中无定义。要求在任何派生类中都定义自己的版本; b. 纯虚函数为各派生类提供一个公共界面(接口的封装和设计,软件的模块功能划分); c. 纯虚函数声明形式:virtual vo...原创 2018-07-30 13:03:07 · 15521 阅读 · 0 评论