C++学习
fight_onlyfor_you
这个作者很懒,什么都没留下…
展开
-
C++学习day20之继承与派生1
#include<iostream>using namespace std;/* * *Inherit(继承)&&Derive(派生)这个单词看起来是两个不同的单词 *但是表达的是一个意思 儿子继承父亲,父亲派生儿子 *这两个从不同的角度去说明父子关系,只是角度不一样 *那么继承和派生到底解决了什么问题呢,解决了C++中可重用性 * *//* ...原创 2018-03-01 23:42:26 · 257 阅读 · 0 评论 -
C++学习16之static
#include<iostream>using namespace std;/* *我们先来回顾一下C语言的static *C语言中的static可以修饰两类东西 *第一个是全局变量,第二个是局部变量 *全局变量有个特点叫外链性 作用域仅限于本文件 就是修饰了作用域 *作为局部变量的时候,限制了生命周期和存储位置,以前对于一个局部变量来说 *存储位置在栈上面,但是加了...原创 2018-02-26 00:30:42 · 152 阅读 · 0 评论 -
C++学习17之友元
#include<iostream>using namespace std;/* *有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成 *员,这时可以将这些函数定义为该函数的友元函数。 *同类对象间无私处,异类对象间有友元 *除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行 *效率(即减少了类型检查和安全性检查等都需要实...原创 2018-02-26 00:41:57 · 198 阅读 · 0 评论 -
C++学习day3之运算符重载
#include<iostream>using namespace std;#if 0struct Complex //复数{ float real; float image;};Complex operator+(Complex a,Complex b){ Complex c; c.real = a.real+b.real; c...原创 2018-02-25 21:59:33 · 215 阅读 · 0 评论 -
C++学习day18之 指向类成员的指针
#include<iostream>using namespace std;//指向类成员的指针//类成员就包含两类,一类是数据成员,一类是函数成员。//一定要看好,这里是类数据成员,不是对象数据成员//指向类数据成员的指针//定义<数据类型><类名>::*<指针名>//赋值&初始化//<数据类型><类名&...原创 2018-02-26 00:51:54 · 224 阅读 · 0 评论 -
C++之伪函数
#include<iostream>#include<vector>#include<algorithm>using namespace std;/* *函数操作符()-----仿函数 *把类对象像函数名一样使用 *伪函数,就是使用一个类的使用看上去像一个函数,其实现就是类中实现一个 *operator(),这个类就有了类似函数的行为,就是一个伪...原创 2018-02-26 00:56:37 · 3372 阅读 · 0 评论 -
C++学习day23之多继承
从继承的类别上分,继承可以分成多继承和单继承,前面讲的都是单继承。这里其实很容易划分,单继承就是一个父类,多继承就是多个父类。在生活当中有什么意思呢,生活当中,鱼与熊掌不可兼得。但是到了计算机就可以实现,生成一种新的对象,叫做熊掌鱼,多继承自鱼和熊掌即可。再拿我们的沙发床来说,即可以当沙发又可以当床。#include<iostream>using namespace std;cl...原创 2018-03-30 01:25:27 · 162 阅读 · 0 评论 -
派生类的友员函数
#include<iostream>using namespace std;class Student{public: Student() :a(50),b(60) { } friend ostream &operator<<(ostream &out,Student &stu);p...原创 2018-03-25 11:29:04 · 221 阅读 · 0 评论 -
C++学习之25
#include<iostream>using namespace std;#if 0C++有一种设计原则叫做依赖导致,也是基于多态的。定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。#endif//这个I是interface的意思。class IReader{public: virtual string ge...原创 2018-04-09 01:15:44 · 280 阅读 · 0 评论 -
C++学习day22之继承与派生
#include<iostream>using namespace std;/* *类内部的private protected public 影响的访问权限 *继承中的private protected public 影响的是父类中的成员在子类中的访问权限的 问题 这个访问权限包括两部分。1.在子类中 2.在子类对象中。 *99%情况下只是用public继承方式。 *...原创 2018-03-28 01:16:33 · 240 阅读 · 0 评论 -
C++学习Day24z之多态
#include<iostream>using namespace std;/*C++中所谓的多态(polymorphism)是指,由继承而产生的相关的不同的类,其对象对同一消息会作出不同的相应 * 多态性是面向对象程序设计的一个重要特性,能增加程序的灵活性,可以减轻系统升级,维护调试的工作量和复杂度。*//*多态实现的前提是赋值兼容。 * 赋值兼容规则是指在需要基类对象的...原创 2018-04-07 03:35:06 · 242 阅读 · 0 评论 -
C++之模板
#include<iostream>using namespace std;/* * 模板:Templates * 泛型(Generic Programming)即是指具有在多种数据类型上皆可操作的含意。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件 * 泛型编程最初诞生于C++中,目的是为了实现C++的STL(标准模板库)。其语言支持机制就是模板(Templ...原创 2018-05-13 02:07:33 · 218 阅读 · 0 评论 -
C++之verctor
#include<iostream>#include<vector>using namespace std;int main(){ //这里相比较前面的,vector其实是个类模板,然后你vector<int>就是个模板类。 //vi就是个类对象,然后这个10就是个参数。它里面有两个很重要的东西,输出这个东西。 //这个size...原创 2018-05-13 02:57:53 · 571 阅读 · 0 评论 -
C++day26之rtti
#include<iostream>#include<typeinfo>using namespace std;typedef void (*PF)(int);/* *RTTI:run time type identification typeid,dynamic_cast运行时类型信息,在运行时需要检查类型信息的,那就是多态。所以说这两个东西只有用于多态才有...原创 2018-05-07 23:47:06 · 216 阅读 · 0 评论 -
C++输入输出流
cin和cout充当了scanf和printf的功能,但是他们不是函数,而是类对象,那么我们有必要了解一下,他们是哪些类的对象。关于输入输出流有下图这么一个整套的东西,这整套东西很复杂,我们一般来说不去研究,但是呢,我们可以从继承关系看出它属于哪个流类的对象,首先有一个叫ios_base,ios继承ios_base,这个箭头画的不对,真正的继承体系中,箭头应该指向父类。ios又派生了istream...原创 2018-05-15 01:08:41 · 11688 阅读 · 0 评论 -
C++学习day15之const
#include<iostream>using namespace std;/* *const修饰符 *1.const可以修饰数据成员,成员函数,类对象 *2.修饰数据成员的时候:初始化的位置只能在参数列表里面。 * 虽然你在构建类成员的时候能给初始值 * 但是我们构造类成员是用来定义...原创 2018-02-26 00:29:49 · 232 阅读 · 0 评论 -
C++学习day14之成员函数的存储
#include<iostream>#include<iomanip>using namespace std;/* *我们一直在说一个问题,那就是这个类的大小大概有多大呢 *它只包含数据类型的大小,不包含函数的大小。 *看下面这个例子,这里的输出结果为12。所以这里面的size是不包含函数的。 * */ #if 0class Time{public:...原创 2018-02-26 00:26:26 · 153 阅读 · 0 评论 -
C++学习day13之返回值
#include<iostream>#include<cstdio>using namespace std;/* *先了解一下返回过程 *下面这段程序我们的main函数先压栈。然后里面放了一个i,然后func进入进行压栈 *我们func消失之后,那段栈就没了,那它是借助什么将返回值传递出去的呢。 *我们C语言是这么做的,它首先在外部找一个空间,func在消失以...原创 2018-02-26 00:20:16 · 138 阅读 · 0 评论 -
C++学习day21之继承与派生2
#include<iostream>using namespace std;/* *这里会输出Father和Son, *跟我们前面讲的不一样啊。 *这里的父类构造器调用了。 */ #if 0class Father{public: Father() { cout<<"Father"<<endl; ...原创 2018-03-02 01:36:17 · 166 阅读 · 0 评论 -
C++学习day1之C++与C基础比较
/* * *这里主要说明C和C++类型增强的程序 * */#include<stdio.h>#include<stdlib.h>int main(){ /***C语言 const int a; 不赋初始值 * 如果你这样定义,只是你后面不能给他赋值,不代表编译不过去, * 但是C++不行,C++编译都通不过去 * 还有...原创 2018-02-25 13:39:05 · 175 阅读 · 0 评论 -
C++学习day2之函数重载
#include<iostream>using namespace std;/* *函数重载:同一个东西表示两个不同的意思,俩个不同的意思怎么区分呢,由语境决定,C语言里面函数名是不能相同的。 * *int func(int a) *int func(char b) *如果你int a=10;func(a)的话就是调用的int func(int a),看语境的。 *重...原创 2018-02-25 21:57:09 · 272 阅读 · 0 评论 -
C++学习day3之默认参数
#include<iostream>#include<time.h>using namespace std;//这个世界上很多东西都是有默认状态的。//这里可以给个默认参数 为2.5;//后面你调用的时候不传参数就是默认参数。 ////对于一个参数来说void Weather_Cast(string weather = "rainy"){ t...原创 2018-02-25 22:02:58 · 122 阅读 · 0 评论 -
C++学习day4之引用
#include<iostream>using namespace std;/* 变量名,本身是一段内存的引用,即别名。此处引入的引用,是为已有变量起一个别名 */int main(){ /* * int a=100; *这是a是个变量名,实质是一段内存空间的别名, *这个就是出生的时候给它的。日后我们还可以给它取个别名,如下 ...原创 2018-02-25 22:04:44 · 147 阅读 · 0 评论 -
C++学习day5之new_and_delete
#include<iostream>#include<stdlib.h>//#include<string.h>#include<cstring>using namespace std;int main(){#if 0 /*C语言中提供了malloc和free两个系列打函数,完成对堆内存的申请和释放 *但是C++则提...原创 2018-02-25 22:20:26 · 116 阅读 · 0 评论 -
C++学习day6之内联函数
#include<iostream>using namespace std;/* *宏函数的优缺点 *宏函数像这样的:#define SQR(i) ((i)*(i)) *优点:代码内嵌,不用发生函数调用。 *缺点:容易产生歧义,易使text段体积增大,不会进行类型检查 */ /*** * *函数的优缺点 *优点:一段高度抽象的逻辑,不易产生歧义,是text段体...原创 2018-02-25 22:25:20 · 150 阅读 · 0 评论 -
C++学习day7之类型转换
int main(){/* *假设我们定义一个float a=5.6; *int b=5; *如果我把float强转为int的话,就会把小数点给截没了,我把b转为float的话 *5就会变为5.0。static_cast对隐式类型转换,即可以使用此类型 * b=static_cast<int>(a); */#if 0 float a=5.6; int...原创 2018-02-25 22:34:01 · 147 阅读 · 0 评论 -
C++学习day7之namespace
#include<iostream>using namespace std;/*命名空间为了大型项目开发,而引入的一种避免命名冲突的一种机制 *比如说,在一个大型项目中,要用到多家软件开发商提供的类库。在 *事先没有约定的情况下,两套类库可能存在同名的函数或是全局变量而 *产生冲突。项目越大,用到的库越多,开发人员越多,这种冲突就会约 *明显 */#if 0int v...原创 2018-02-25 22:35:34 · 130 阅读 · 0 评论 -
C++学习day8之string
#include<iostream>#include<cstring>using namespace std;/* *string 其实不是关键字,而是std下面的一个类。 * * */ int main(){ /* *类的初始化的方式还有很多,比如string str("china"); *string str="hello"...原创 2018-02-25 22:41:53 · 159 阅读 · 0 评论 -
C++学习day9之封装
#include<iostream>using namespace std;/* *C语言的封装风格 数据放到一起打包进struct,然后把数据以引用或指针的 *方式传给行为。 * *C++ 认为C封装不彻底 *数据和行为分类,没有权限控制。 *C++ 对内数据开放,逻辑抽象,对外,提供接口 * */ /* *类里面默认的是私有的。 *等价于 *class...原创 2018-02-25 22:53:26 · 178 阅读 · 0 评论 -
C++学习day10之构造器
#include<iostream>#include<cstring>using namespace std;/* *看我们前面所实现的,都会有一个init初始化, *然后我们想,这个初始化的工作能不能自动完成,比如你用string的时候 *你也没使用str.init(),我们不需要,实际上就是我们要学习的第一个叫做构造器 *构造器是什么东西,就是在构造...原创 2018-02-25 23:02:11 · 175 阅读 · 0 评论 -
C++学习day11之string自实现
#include<iostream>#include<cstring>using namespace std;class String{public: String(const char *p=NULL) { if(p==NULL) { str=new char; *...原创 2018-02-25 23:13:18 · 159 阅读 · 0 评论 -
C++学习day12之this指针
#include<iostream>using namespace std;//下面的代码可以运行输出的结果是一样的//this 就是生成对象的时候的指针。//这个有什么好处呢//有一天你比较二//写了下面这段代码//class Stu//{//public:// Stu(string name,int age)// {// //这样会混乱,所以C++不能...原创 2018-02-26 00:16:48 · 140 阅读 · 0 评论 -
C++抛出异常
#include<iostream>#include<cmath>using namespace std;#if 0//C语言中错误的处理,通常是采用返回值的方式或是置位全局变量的方式。这就存在两个问题。如果返回值正是我们需要的数据,且返回数据同出错数据容错差不多。全局变量,在多线程中易发生竞争。而且,当错误发生的时候,上级函数要出错处理,层层上报,造成过多的出错处...原创 2018-05-29 01:51:34 · 5689 阅读 · 0 评论