C++学习
初七0607
这个作者很懒,什么都没留下…
展开
-
第六十七课:经典问题分析五-----狄泰软件学院
一、编写程序判断一个变量是不是指针。实例分析1:指针判断#include <iostream>#include <string>using namespace std;class Test{public: Test() { } virtual ~Test() { }};template<type...原创 2019-10-11 22:09:38 · 208 阅读 · 0 评论 -
第四十七课:父子间的冲突------学习-狄泰软件学院C++课程
一、子类中是否可以定义与父类中的同名函数,如果可以这么区分?实例分析:同名成员变量分析#include <iostream>#include <string>using namespace std;class Parent{public: int mi;};class Child : public Parent{public: i...原创 2019-09-22 23:54:40 · 235 阅读 · 0 评论 -
第四十六课:继承中的构造与析构---狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件一、如何初始化父类成员?父类构造函数和子类构造函数有什么关系?子类中可以定义构造函数子类构造函数(1)必须对继承而来的成员进行初始化(2)直接通过初始化列表或者赋值的方式进行初始化(3)调用父类构造函数进行初始化父类构造函数在子类中的调用方式(1)默认调用适用于无参构造函数和使用默认参数的构造函数(2)显示调用通过初始化列表进...原创 2019-09-21 22:08:20 · 122 阅读 · 0 评论 -
第四十五课:不同的继承方式----狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件一、被忽视的细节是否可以将继承语句中的public换成protected或者private?如果可以与public继承有什么区别?实例分析:#include <iostream>#include <string>#include <sstream>using namespace std;class...原创 2019-09-21 21:22:59 · 131 阅读 · 0 评论 -
第四十四课:继承中的访问级别----狄泰软件学院
文章来源于狄泰软件学院唐老师C++课程课件一、子类是否可以直接访问父类的私有成员?实例分析:继承中的访问级别#include <iostream>#include <string>using namespace std;class Parent{private: int mv;public: Parent() { ...原创 2019-09-19 21:39:19 · 101 阅读 · 0 评论 -
第四十三课:继承的概念和意义----狄泰软件学院
文章来源于狄泰软件学院唐老师C++课程课件一、问题:类之间是否存在直接的关联关系?组合关系:整体与部分的关系实例分析:组合关系的描述#include <iostream>#include <string>using namespace std;class Memory{public: Memory() { cout &l...原创 2019-09-18 21:02:47 · 97 阅读 · 0 评论 -
第四十二课:类型转换函数(下)---狄泰软件学院
文章来源于狄泰软件学院唐老师C++课程课件一、类类型是否能够类型转换到普通类型?#include<iostream>#include<string>using namespace std;class Test{ int mValue;public: Test(int i=0) { mValue=i; } int value() { r...原创 2019-09-18 20:08:16 · 97 阅读 · 0 评论 -
第四十一课:类型转换函数(上)----狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件。一、再论类型转换标准数据类型之间会进行隐士的类型安全转换转换规则如下:实例分析:有趣的隐式类型转换...原创 2019-09-18 19:22:50 · 108 阅读 · 0 评论 -
第四十课:前置操作符和后置操作符-----狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件。一、值得思考的问题i++;i的值作为返回值,i自增1++i;i自增1,i的值作为返回值两者在实际工程没有区别。实例:#include <iostream>#include <string>using namespace std;int main(){ int i = 0; i++;...原创 2019-09-11 21:12:31 · 129 阅读 · 0 评论 -
第三十九课:逗号操作符------狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件。一、逗号操作符逗号操作(,)可以构成逗号表达式逗号表达式用于将多个子表达式连接为一个表达式逗号表达式的值为最后一个子表达式的值逗号表达式中的前N-1个子表达式可以没有返回值逗号表达式按照从左向右的顺序计算每个子表达式的值exp1,exp2,exp3,…expN实例:逗号表达式的示例#include<iostream>...原创 2019-09-11 20:12:52 · 108 阅读 · 0 评论 -
第三十八课:逻辑操作符的陷进----狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件。一、潜规则操作数只有两种值(true和false)逻辑表达式不用完全计算就能确定最终值最终结果只能是true或者是false二、#include<iostream>#include<string>using namespace std;int func(int i){ cout<<"in...原创 2019-09-07 20:21:01 · 98 阅读 · 0 评论 -
第三十七课:智能指针分析---狄泰软件
文章来源狄泰软件学院唐老师C++课程课件一、内存泄露:动态申请堆空间,用完后不归还C++语言中有没有垃圾回收的机制指针无法控制所指堆空间的生命期实例分析:内存泄露#include <iostream>#include <string>using namespace std;class Test{ int i;public: Te...原创 2019-08-31 18:20:25 · 198 阅读 · 0 评论 -
复习:智能指针。Pointer& operator = (const Pointer& obj)
Pointer& operator = (const Pointer& obj)原创 2019-08-31 18:19:20 · 217 阅读 · 0 评论 -
第三十六课:经典问题解析三----狄泰软件学院
文章内容来源于狄泰软件唐老师C++课程课件一、赋值的疑问什么时候需要重载赋值操作符编译器是否提供了默认的赋值操作?编译器为每个类默认重载了赋值操作符默认的操作符仅完成浅拷贝当需要进行深拷贝时必须重载赋值操作符赋值操作符与拷贝构造函数具有相同的存在意义#include <iostream>#include <string>using namespac...原创 2019-08-31 17:23:19 · 146 阅读 · 0 评论 -
第三十五课:函数对象分析----狄泰软件学院
文章内容来源狄泰软件学院唐老师C++课程课件需求:编写一个函数函数可以获得斐波拉契数列的每项值每次调用一次返回一个值函数课根据需要重复使用for(int i=0;i<10;i++){ cout<<fib()<<endl;}#include<iostream>#include<string>using namesp...原创 2019-08-31 10:56:09 · 74 阅读 · 0 评论 -
第三十四课:数组操作符的重载----狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件一、string类对象还具备C方式字符串的灵活性吗?还能直接访问单个字符吗?string类最大限度的考虑了C字符串的兼容性可以按照使用C字符串的方式使用string对象string s="a1b2c3d4e5";int n-0;for(int i=0;i<s.length();i++){ if(isdigit(s[i])) {...原创 2019-08-29 20:19:31 · 133 阅读 · 0 评论 -
初探常量指针、指向常量的指针和指向常量的常指针
1 常量指针,简称常指针。int * const p常指针,从字面的意思来理解,就是指针变量所指的空间地址是常量。需要强调的是这个地址在一开始就确定为常量,那么地址不能被修改,也就是说确定了指向谁之后,不能再指向其它地址。(C++中的引用也是这个道理)。但是这个地址里面存储的内容可以被修改。#include <iostream>using namespace std;int ...原创 2019-09-23 15:28:43 · 415 阅读 · 0 评论 -
第四十八课:同名覆盖引发的问题-----学习狄泰软件学院C++课程
一、父子间的赋值兼容子类对象可以当作父类对象使用子类对象可以直接赋值给父类对象子类对象可以直接初始化父类对象父类指针可以直接指向子类对象父类引用可以直接引用子类对象实例分析:子类对象的兼容性#include <iostream>#include <string>using namespace std;class Parent{public:...原创 2019-09-23 00:40:08 · 103 阅读 · 0 评论 -
第四十九课:多态的概念和意义----狄泰软件学院C++课程
一、多态的概念和意义面向对象中期望的行为:根据实际的对象类型判断如何调用重写函数父类指针(引用)指向(1)父类对象则调用父类中定义的函数(2)子类对象则调用子类中定义的重写函数注意:在上一课中讲到了父类子类之间的赋值兼容问题,这里根据需要复习一下第四十八课。C++语言直接支持多态的概念通过使用virtual关键字对多态进行支持被virtual声明的函数被重写后具有多态性被...原创 2019-09-24 00:16:59 · 135 阅读 · 0 评论 -
第六十六课:C++中的类型识别-----狄泰软件学院
问题:C++中如何得到动态类型??解决方案:----利用多态在基类中定义虚函数返回具体的类型信息所有的派生类都必须实现类型相关的虚函数每个类中的类型虚函数都需要不同的实现实例分析1:动态类型识别#include <iostream>#include <string>using namespace std;class Base{public: ...原创 2019-10-10 16:32:41 · 119 阅读 · 0 评论 -
第六十二课:单例类模板----狄泰软件学院
一、需求的提出在架构设计时,某些类在整个系统生命周期中最多只能有一个对象的存在,如何定义一个类,使得这个类最多只能创建一个对象。?实例分析1;单例模式初探#include <iostream>#include <string>using namespace std;class SObject{ static SObject* c_instance;...原创 2019-10-09 11:20:17 · 144 阅读 · 0 评论 -
第六十一课:智能指针类模板----狄泰软件学院
一、智能指针的意义现代C++开发库中最重要的类模板之一C++中自动内存管理的主要手段能够在很大程度上避开内存相关的问题STL中的智能指针auto_ptr生命周期结束时,销毁指向的内存空间不能指向堆数组,只能指向堆对象(变量)一片堆空间只属于一个智能指针对象多个智能指针对象不能指向同一片堆空间实例分析1:auto_ptr使用初探#include <iostream&...原创 2019-10-09 10:30:17 · 113 阅读 · 0 评论 -
第六十课:数组类模板-----狄泰软件学院
一、预备知识有趣的面试题:用你觉得最高效的方法求:1+2+3+4+5…+N的值实例分析1:数值型模板参数#include <iostream>#include <string>using namespace std;template< typename T, int N >//< typename T, double N >//报...原创 2019-10-09 09:29:00 · 102 阅读 · 0 评论 -
第五十九课:类模板深度解析----狄泰软件学院
一、多参数类模板类模板可以定义任意多个不同的类型参数实例分析1:类模板的特化#include <iostream>#include <string>using namespace std;template< typename T1, typename T2 >class Test{public: void add(T1 a, T2...原创 2019-10-08 11:32:25 · 122 阅读 · 0 评论 -
第五十八课:类模板的概念和意义----狄泰软件学院
一、在C++中是否能够将泛型编程应用于类?类模板一些类主要用于存储和组织数据元素类中数据组织的方式和数据元素的具体类型无关如:数组类,链表类,stack类,queue类C++中的类模板以相同的方式处理不同的类型在类声明前使用template进行标识用于说明类中使用的泛指类型Ttemplate <typename T>class Operator{publ...原创 2019-10-07 21:58:02 · 135 阅读 · 0 评论 -
第五十七课:深入理解函数模板---狄泰软件学院
一、函数模板编译器从函数模板通过具体类型产生不同的函数编译器会对函数模板进行两次编译对模板代码本身进行编译对参数替换后的代码进行编译注意事项:函数模板本身不允许隐式类型转换自动推导类型是,必须严格匹配显示类型指定时,能够进行隐式类型转换实例分析1:函数模板本质分析#include <iostream>#include <string>using...原创 2019-10-07 20:36:06 · 113 阅读 · 0 评论 -
第五十六课:函数模板的概念和意义---狄泰软件学院
一、C++中有几种交换变量的方法?定义宏代码块VS定义函数实例分析1:变量的交换#include <iostream>#include <string>using namespace std;#define SWAP(t, a, b) \do \{ \ ...原创 2019-09-29 23:49:52 · 117 阅读 · 0 评论 -
第五十五课:经典问题分析四(new与malloc,构造函数,析构函数,虚函数,多态,dynamic_cast)---狄泰软件学院
一、new和malloc的区别是什么?delete和free的区别是什么?new关键字与malloc函数的区别new关键字是C++的一部分malloc是由C库提供的函数new一具体类型为单位进行内存分配malloc一字节为单位进行内存分配new在申请内存空间时可进行初始化malloc仅根据需要申请定量的内存空间实例分析1:new和malloc的区别#include <...原创 2019-09-29 23:12:57 · 241 阅读 · 0 评论 -
第五十四课:被遗弃的多重继承(下)---狄泰软件学院
一、多重继承的问题三实例分析1:多重继承问题3#include <iostream>#include <string>using namespace std;class BaseA{public: virtual void funcA() { cout << "BaseA::funcA()" << e...原创 2019-09-29 21:47:13 · 189 阅读 · 0 评论 -
第五十三课:被遗弃的多重继承(上)---狄泰软件学院
一、C++中是否允许一个类继承自多个父类?C++支持编写多重继承的代码一个子类可以拥有多个父类子类拥有所有父类的成员变量子类继承所有父类的成员函数子类对象可以当作任意父类对象使用、二、多重继承的语法规则class Derived:public BaseA, public BaseB, public BaseC{};实例分析1:多重继承问题一#include...原创 2019-09-29 19:54:42 · 126 阅读 · 0 评论 -
第五十二课:C++中的抽象类---狄泰软件学院
一、什么是抽象类?面向对象中的抽象概念在进行面向对象分析时,会发现一些抽象的概念,比如图形面积如何计算?在没有明确什么图形之前,并不能做到。所以对概念上的图形求面积是没有意义的。class shape{public:double area(){return 0;}};shape只是一个概念的类型,没有具体的对象。shape类有没有存在的必要?面向对象中的抽象类(...原创 2019-09-27 00:55:21 · 131 阅读 · 0 评论 -
第五十一课:C++对象模型分析(下)---狄泰软件学院
一、继承对象模型实例分析1:继承对象模型初探#include <iostream>#include <string>using namespace std;class Demo{protected: int mi; int mj;public: virtual void print() { cout <...原创 2019-09-26 01:43:02 · 134 阅读 · 0 评论 -
第五十课:对象模型分析(上)---狄泰软件学院
一、回归本质class是一种特殊的struct在内存中class依旧可以看作变量的集合class中的成员函数与成员变量是分开存放的(1)每个对象由独立的成员变量(2)所有的对象共享类中的成员函数实例分析1:对象内存布局初探#include <iostream>#include <string>using namespace std;class ...原创 2019-09-26 01:23:59 · 136 阅读 · 0 评论 -
C/C++指针详解---转载自:沉晓:https://blog.csdn.net/qq_42322103/article/details/99087036
<div class="article-copyright"> <span class="creativecommons"> <a rel="license" href="http://creativecommons.org/lice...转载 2019-08-29 19:31:51 · 175 阅读 · 0 评论 -
第三十三课:C++中字符串类------=狄泰软件学院
文章内容来源于狄泰软件学院唐老师C++课程课件一、历史遗留问题C语言不支持真正意义上的字符串C语言字符数组和一组函数实现字符串操作C语言不支持自定义类型,因此无法获得字符串类型二、解决方案从C到C++的进化过程引入了自定义类型在C++中可以通过类完成字符串类型的定义问题:C++中的原生类型系统是否包含字符串的类型?(1)C++语言直接支持C语言的所有概念(2)C++语言...原创 2019-08-29 19:24:23 · 128 阅读 · 0 评论 -
第十六课:类的真正形态
一、类的关键字struct在C语言中已经有了自己的含义,必须继续兼容在C++中提供了新的关键字class,用于类定义class和struct的用法是完全相同二、class和struct的区别(1)在struct定义类时,所有成员默认public(2)在class定义类时,所有成员默认private三、类的真正形态C++中的类支持声明和实现的分离将类的实现和定义分开:(...原创 2019-08-27 14:51:29 · 95 阅读 · 0 评论 -
第十五课:类与封装的概念
一、类通常分为两个部分类的实现类的使用方式当使用类是,不需要关心其实现的细节,当创建类时,才需要考虑其内部实现的细节二、封装的基本概念并不是类的每个属性都是对外公开一些类的属性是对外公开必须在类的表示法中定义属性和行为的公开级别,类似于文件系统中文件的权限三、C++中类的封装成员变量:C++中用于表示类属性的变量成员函数:C++中用于表示类行为的函数C++中可以给成...原创 2019-08-27 12:07:18 · 116 阅读 · 0 评论 -
第十四课:面向对象(下)
一、类之间的基本关系(1)继承从已经存在类细分出来的类和原类之间具有继承关系(is a )例如:华南虎是老虎,倒过来念就不成立继承的类(子类)拥有原类(父类)的所有属性和行为(2)组合一些类的存在必须依赖于其他的类,这种关系叫做组合,组合的类在某一个局部上由其他的类组成,同生死共存亡。例如:继承关系:电脑:华硕,联想组合:硬盘,内存,CPU,主板——>电脑...原创 2019-08-27 11:19:44 · 113 阅读 · 0 评论 -
第十三课:面向对象的基本概念(上)
一、面向对象的意义:将日常生活中的习惯思维方式引入程序设计中将需求中的概念直观映射到解决方案中以模块为中心构建可复用的软件系统提高软件产品的可维护性和可扩展性二、类和对象是面向对象中的两个基本概念类:指的是一类事物,是一个抽象的概念对象:指的是属于某个类的具体实体类是一种模型,这个模型可以创建出不同的对象实体对象实体是类模型的一个具体实例一个类可以有很多对象,而一个对象...原创 2019-08-27 10:51:05 · 155 阅读 · 0 评论 -
第十课:C++中的新成员
一、动态内存分配(1)C++中的动态内存分配C++中通过new关键字进行动态内存申请C++中的动态内存设申请是基于类型进行的delete关键字用于内存释放#include <stdio.h>int main(){ int* p = new int; *p = 5; *p = *p + 10; printf("p ...原创 2019-08-23 08:42:30 · 65 阅读 · 0 评论