
传智播客(扫地僧)
GoJawee
这个作者很懒,什么都没留下…
展开
-
第九天2017/04/18(2、类的继承、面试题:继承访问修饰符、组合、static、构造、多态)
继承:可以使用原来的代码,代码复用 多态:代码复用、接口复用,用基类的指针“根据对象”调用“指定对象的函数”。1、继承、访问修饰符 //C++类成员的3种访问级别 //C++继承的3种继承方式2、C++不是类型安全的语言3、赋值兼容问题: 类型转换4、static与继承 在基类中定义的静态成员,将被所有派生类共享; 根据静态成员自身的访问特性和派生类的原创 2017-04-18 21:42:43 · 461 阅读 · 0 评论 -
第九天2017/04/18(1、友元函数、运算符重载)
1、成员函数和全局函数转换的技巧从类的成员函数转换为全局函数,只需要加一个this指针;从全局函数转换为类的成员函数,需要减去一个左操作数参数。2、友元函数//详细讲解:operator+函数的返回值是对象?还是对象的引用?以及各自对应的正确写法!#include <iostream>using namespace std;class Complex{public: Comple原创 2017-04-18 21:02:08 · 480 阅读 · 0 评论 -
第九天2017/04/18(3、重载/覆盖 PK 重写/重定义、父类子类混搭风、抽象类)
【预备知识】函数重载 必须在同一个类中发生 子类无法重载父类的函数,父类同名的函数将会被名称覆盖 重载是在编译期间根据参数类型和个数决定函数调用 重载只放在同一个类之中,在编译期间就确定函数重写 必须发生在父类与子类之间 父类与子类中的函数必须有完全相同的函数原型 使用virtual关键字声明后能够产生多态(如果没有virtual,那叫重定原创 2017-04-20 11:04:53 · 778 阅读 · 0 评论 -
第八天2017/04/17(2、❤String类的源代码)
//String.h#ifndef _STRING_H_#define _STRING_H_#include <iostream>using namespace std;class String{public://构造函数 String(); String(int n,char c); String(const char *source);//析构函数 ~原创 2017-04-18 14:22:19 · 473 阅读 · 0 评论 -
第十天2017/04/21(3、泛型编程:STL)
C++ Vector 使用心得:https://software.intel.com/zh-cn/blogs/2011/08/10/c-vector原创 2017-04-21 20:45:43 · 309 阅读 · 0 评论 -
第九天2017/04/18(4、非虚继承、虚继承的本质 / sizeof)
case1:非虚继承 上面是代码的继承图#include<iostream>using namespace std;//抽象基类:动物类class CAnimal{public: virtual void EatFood(string strSomething) = 0; virtual void Drink(string strSomething) = 0;};/原创 2017-04-20 19:52:55 · 481 阅读 · 0 评论 -
第十天2017/04/21(2、泛型编程:模板 / 全特化、偏特化)
1、什么是模板? template<class T1,class T2,.....>类属————类型参数化,又称参数模板 使得程序可以从逻辑功能上抽象,把被处理的对象(数据)的类型作为参数传递。【1】函数模板#include <iostream>using namespace std;//函数模板template <class T1,class T2>void show(T1原创 2017-04-21 18:33:41 · 561 阅读 · 0 评论 -
第十天2017/04/21(1、函数指针、❤动态库回调❤)
1、函数指针的语法基础【函数指针的定义、初始化、使用】 对函数名去多少个&,都不起作用,都是一样的,都还是它本身test。 如:test、&test、&&test、&&&test都表示函数的入口地址同样: 对函数名去多少个*,都不起作用,都是一样的,都还是它本身test。 如:test、*test、**test、***test都表示函数的入口地址/*定义函数指针:原创 2017-04-21 15:24:57 · 664 阅读 · 0 评论 -
第六天2017/04/11(1:结构体链表基础和相关经典操作)
一、结构体基础【知识回顾】自定义数据结构的本质 //结构体中有结构体变量、结构体指针#include "stdio.h"#include "stdlib.h"#include "string.h"struct student{ char name[64]; int age; char *p;};struct teacher{ char name[64];原创 2017-04-11 19:49:34 · 489 阅读 · 0 评论 -
第六天2017/04/11(2:Linux内核链表Demo、顺序表、链表的开发与设计)
//结构体相关的高级话题#include "stdio.h"#include "stdlib.h"#include "string.h"//定义一个结构体,就相当于各个变量的偏移量也定下来了struct student{ char name[32]; //32个字节 int age; //4个字节 char *na; //4个字节};i原创 2017-04-12 18:47:13 · 464 阅读 · 0 评论 -
第十天2017/04/23(1、企业财富库:“循环单链表”的设计与实现)
循环单链表 循环单链表的插入操作(分为四种情况,归结为三类) 循环单链表的删除操作(分为四种情况,归结为三类) //circlelist.h函数的声明#ifndef _CIRCLELIST_H_#define _CIRCLELIST_H_typedef void CircleList;/*typedef struct _tag_CircleListNode CircleListNo原创 2017-04-23 18:40:25 · 390 阅读 · 0 评论 -
第十天2017/04/25(2、企业财富库:)
“双向链表”“栈:顺序栈、链栈”“队列:顺序队、链队”原创 2017-04-25 12:00:39 · 400 阅读 · 0 评论 -
第十一天2017/04/25(2、二叉树)
操作原创 2017-04-25 15:21:24 · 424 阅读 · 0 评论 -
第十一天2017/04/25(1、二叉树)
二叉树遍历的本质: 先序中序后序遍历:每个结点都要被“访问”3次,只是访问的时机不同。typedef struct BiTNode //二叉链表{ int data; struct BiTNode *lchild, *rchild; //左孩子 右孩子}BiTNode, *BiTree;void PreOrder(BiTNode* T)//先序遍历二叉树{ if原创 2017-04-25 15:20:12 · 453 阅读 · 0 评论 -
第三天2017/03/30(下午:二级指针的(输出)内存模型)
数组原创 2017-03-29 18:45:32 · 467 阅读 · 0 评论 -
第七天2017/04/14(引用与const、C++基本知识)
引用专题原创 2017-04-14 19:29:45 · 318 阅读 · 0 评论 -
第五天2017/04/06(下午3:静态链接库(Lib))
原文链接:http://blog.youkuaiyun.com/xiaoding133/article/details/8973436一、静态链接库和动态链接库 1.静态链接库(.LIB):函数和数据被编译进一个二进制文件。发布时,只需要发布这个可执行文件,并不需要发布被使用的静态库。 2.动态库(.DLL):在使用动态库的时候,往往提供两个文件:一个引入库(.lib)文件和一个DLL(.dll)。虽然引入原创 2017-04-09 21:59:45 · 428 阅读 · 0 评论 -
第五天2017/04/06(下午2:动态链接库(DLL))
例1:【功能介绍】创建动态库: ①在头文件中声明两个函数 ②一个在.c文件中实现,另一个在.cpp文件中实现使用动态库: 在main.c和main.cpp使用上面生成的动态库中的两个函数(1)创建动态库//DLL.h头文件声明2个函数#ifndef DLL_H #define DLL_H #ifdef BUILD_DLL #define PORT_DLL原创 2017-04-10 16:32:31 · 922 阅读 · 0 评论 -
第五天2017/04/06(下午1:C、C++混合编程 与 #ifdef __cplusplus extern "C"{ })
C++、C编译器对函数编译的相关知识: C++支持函数重载,而C不支持,两者的编译规则也不一样。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为: void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字可能为_foo,而C++编译器则会产生像_foo_int_int之类的名字。 结论:在.cpp文件中使用.c文件中生成的原创 2017-04-09 11:20:44 · 549 阅读 · 0 评论 -
第八天2017/04/17(1、拷贝构造、❤临时对象)
调用拷贝构造函数的三种case1. MyPoint p2 = p1; MyPoint p2(p1); case1中的重点:MyPoint p3 = MyPoint(3,3); //此时:C++编译器进行优化, //只调用一次构造函数(并不涉及拷贝构造函数的调用)2. 形参:类对象,实参:类对象3. 返回值:类对象/*总结与技巧: 一定要区分等号的两种含义:其中一种原创 2017-04-17 19:42:29 · 383 阅读 · 1 评论 -
第四天2017/03/31(下午2:结构体、数组)
【作业】二级指针做输出(在被调函数中分配空间,主调函数中使用)//实现的目标:把两个字符数组作为输入,排好序保存到另外一个字符数组中。#include<iostream>using namespace std;char** sort(char Arr1[][10],int num1,char **Arr2,int num2){ int len = num1+num2;//在被调函数原创 2017-04-06 10:55:40 · 356 阅读 · 0 评论 -
第四天2017/03/31(下午1:结构体、数组)
//备用知识:没有内存,哪有指针?int main(){//错误程序 char *name; //此处只定义了指针name(指针占4个字节),并没有给name分配内存 //name = (char*)malloc(100*sizeof(char)); cin>>name; //因此:往name中写数据,程序肯定会运行崩溃! cout<<name;}修改成下面原创 2017-03-31 17:57:42 · 492 阅读 · 0 评论 -
第五天2017/04/06(上午:文件的“读写操作”)
文件的“读”、“写”的理解 不是站在“程序”的角度,而是站在“文件”的角度 读:从文件中读取数据,输出到程序中 写:从程序中读取数据,写入到文件中(1)在C程序中系统对文件进行的各种操作是通过指向文件结构体的指针变量实现的。 定义指向文件结构欧体类型的指针变量的形式: FILE* 指针变量名; 例如: FILE *fp1 , *fp2;(2)文件原创 2017-04-08 11:32:32 · 576 阅读 · 0 评论 -
第四天2017/03/31(上午:指针、数组的小知识)
1、指针数组的应用场景(用处很小)(1)int main(int argc,char* argv[])//cmd命令行(2)菜单2、野指针问题【概念】指针p指向的内存空间被释放掉,但是p指针的值还存在(p还是指向被释放的空间的首地址),此时p就是悬挂指针,又称为野指针。【解决野指针带来的问题】(1)定义指针时,进行初始为NULL;(2)释放指针p时,判断p是否为NULL:若不是NULL才进行原创 2017-03-31 16:26:06 · 408 阅读 · 0 评论 -
第二天2017/03/29: 字符串操作
1、堆、栈的生长方向【记忆知识】栈的生长方向:开口向下(后定义的变量的内存地址更小)堆的生长方向:开口向上(后分配内存的变量的内存地址更大)【注意】堆、栈的生长方向和内存存放方向是两个不同的概念,例如:分析a和b的地址大小(栈的生长方向)、a[0]和a[2]的地址的大小(内存存放方向) int a[10]; int b[10];答: a的地址大于b的地址,但是a[0原创 2017-03-29 17:05:30 · 554 阅读 · 0 评论 -
第三天2017/03/30(上午:二级指针的(输入)内存模型:(共三种模型))
字符数组的操作易犯错误: 1.字符数组在使用前是否分配空间 2.字符数组能否返回地址 3.定义char* p;临时变量p,保存strstr等函数返回的地址。 【注】我们只有在使用指针所指向的内存空间的时候,我们才去关心“指针的类型”。二级指针作“输入”时,有下面三种内存模型//内存模式一:函数原型下面4个(哪个正确,哪个错误?)void print_s1(char **p, in原创 2017-03-30 19:13:21 · 662 阅读 · 0 评论 -
c语言框架总结
c语言框架原创 2017-03-12 12:10:53 · 1254 阅读 · 0 评论 -
第八天2017/04/17(3、C++的几个语法)
1、 必须用成员初始化列表的三种形式: const成员 引用成员 C++编译器不知道如何构造某个类#include <iostream>using namespace std;class A{public: A(int a) { this->a = a; } void print_A() {原创 2017-04-18 16:05:14 · 413 阅读 · 1 评论 -
第七天2017/04/14(C++对C的扩充,C++与C的区别,C++的基础知识)
1、C++对C的扩展(1)命名空间(作用域):namespace 在C++中,名称name可以使符号常量、变量、宏、函数、结构、枚举、类和对象等,在大规模程序设计中,以及在程序员使用各种各样的C++库时,这些标识符发生“命名冲突”,标准C++引入了namespace关键字,可以很好地控制标识符的作用域。 namespace是指标识符的各种可见问题。C++标准程序库中的所有标识符(形如原创 2017-04-14 14:14:15 · 462 阅读 · 0 评论 -
第一天2017/03/28
程序员培养哪些能力? 两种架构 程序设计思维 【知识点开奖】 1、选择排序思想 ————————————————————x轴 | | | | | | y 轴for(int i=0; i<10; i++) //外层循环:控制第几趟 for(int j=i+1; j<10;j++) //内层循环:比较大小 { if原创 2017-03-28 16:32:19 · 526 阅读 · 0 评论 -
2、UNIX、Linux操作系统的发展历程、介绍、应用领域
先看三个和UNIX相关的伟人 —————>Minix–Unix–Linux UNIXUNIX是多用户、多任务的操作系统。从70年代末开始在市场上出现了不同的UNIX商品化版本,比较有影响的版本包括: IBM的AIX UNIX(跑在小型机上的) HP的HP-UX UNIX SUN的Solaris UNIX,SUN被甲骨文收购了 FreeBSD(互联网公司还有用的)原创 2017-04-26 17:12:37 · 2983 阅读 · 1 评论