1.命名空间函数

 namespace wjy
{
void print()
{
cout<<"";
}
int load(int num)
{
return num;
}
}
using namespace wjy;

2.函数数组的实现

  2.1利用重载函数实现  

    名字相同,参数或者返回值不同等。

 int max(int a, int b)
{
return a>b?a:b;
}
double max(double a, double b)
{
return a>b?a:b
}
float max(float a, float b)
{
return a>b?a:b
}

  2.2利用函数指针实现

    注释:指针函数和函数指针的相关知识-->>http://blog.csdn.net/ameyume/article/details/8220832

 #define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std; typedef struct DATA
{
int sNumb;
char sName[];
float sMath;
}DATA;//结构体定义比较类型
typedef bool(*FUNCP)(DATA, DATA);//定义指针函数类型
bool byNumb(DATA p, DATA m)
{
return (p.sNumb > m.sNumb);
}
bool byName(DATA p, DATA m)
{
return strcmp(p.sName, m.sName) < ;
}
bool byMath(DATA p, DATA m)
{
return (p.sMath > m.sMath);
}
int main(int argc, char*argv[])
{
DATA data1, data2;
data1.sNumb = ;
strcpy(data1.sName, "abc");
data1.sMath = 1.5; data2.sNumb = ;
strcpy(data2.sName, "wjy");
data2.sMath = 2.9; FUNCP ps[] = { byNumb,byName,byMath };
cout << ps[](data1, data2) << ps[](data1, data2) << endl << ps[](data1, data2) << endl;
return ;
}

3.内联函数

C++实现:

inline max(itn a,int b)
{
return a>b?a:b;
}

C语言实现:

define max(a,b) a>b?a:b;

4.堆空间申请内存

typedef struct SData:
{
int nNum;
char sNum[20];
};
 /*在堆空间申请内存*/
int *p = new int;//申请一个普通变量 delete p
int *p = new int[];//申请数组 delete []p
SData *p = new SData;//申请结构体对象 delete p
SData *p = new SData[];//申请结构体数组 delete []p

5.成员函数

成员函数不占空间!!!

 #include <iostream>
using namespace std;
struct STime
{
int nHour;
int nMin;
int nSec;
void SetTime(int a,int b,int c)
{
nHour = a;
nMin = b;
nSec = c;
}
};
int main(int argc,char**argv[])
{
STime wjy;
wjy.SetTime(,,);
cout << sizeof(wjy);
while();
return ;
}

C++成员函数用C语言实现:

 #include <iostream>
using namespace std;
typedef struct STime
{
int nHour;
int nMin;
int nSec;
};
void SetTime(STime* p,int a, int b, int c)
{
p->nHour = a;
p->nMin = b;
p->nSec = c;
}
int main(int argc, char**argv[])
{
STime wjy;
SetTime(&wjy,, , );
cout << sizeof(wjy)<<endl<<wjy.nHour<<endl << wjy.nMin<< endl << wjy.nSec;
//cout<<"123";
while ();
return ;
}

6.预编译语句

 #if true
//执行语句
#endif #if false
//不执行语句
#endif
#ifdef _test_
//如果_test_被#define,那么就执行这句话
#else
//如果没被#define,就执行这句话 #define _test_
#ifdef _test_
//run
#else
//not run

7.const的作用

  这里暂时不考虑,等找工作前期再补上!https://chuanke.baidu.com/v1760453-135963-522762.html

8.类

  参考吕鑫老师教程,进行类的基础概念巩固。

  参考类两种初始化的区别:http://blog.csdn.net/ianchoi/article/details/6917899

  8.1类的基础概念

    A.类的赋值使用拷贝构造函数,看拷贝的类型决定深拷贝和浅拷贝!  

CList::CList(CList& p)
{
memcpy(this,&p,sizeof(p));//拷贝构造函数
}
int a(10);//这也是拷贝构造函数的一种

    B.先申请的后释放空间,后申请的先释放空间

 //先释放list2,后释放list1
CList list1,list2;

    C.static函数在类之中等于全局函数

class CList
{
DATA data;
static int copy(DATA a,DATA b)//等于全局函数,this调用不到
{
a = b;
}
}
 CList::a = ;//static初始化在类外全局初始化
class CList
{
static DATA a;
public:
DATA data;
static int copy(DATA a,DATA b)//等于全局函数,this调用不到
{
a = b;
}
};    

    D.在类中定义函数都会增加一个参数this

 class wjy
{
void max(int a, int b )
{
return a>b?a:b;
}
}
typedef bool(*FUNCP)(DATA,DATA);//定义指针函数类型就不能调用max,因为max有三个参数

    F.函数中的static类

 #include <iostream>
usiang namespace std; typedef DATA int;
class wjy
{
DAAT node = ;
}
void test()
{
static wjy class1;
wjy class2;
}
int main(int argc,char*argv[])
{
test();//static第一次进入的时候进行构造.class2在每一次进入test的时候都进行构造
test();//class2在每一次进入test的时候都进行构造,同时退出的时候也进行析构
test();//class2在每一次进入test的时候都进行构造
return ;//static 在main函数退出的时候才进行析构
}

  8.2类的两种初始化区别

    注释:曾经去面试的时候被问到了,一问三不知,属实尴尬!

 //---在定义的时候分配空间,在构造的时候存放值
//---浪费内存,有时候定义的时候占一个空间,赋值的时候又占一个空间
class CList
{
int data;
CList():
{
data =;
}
} //---在定义的时候分配空间并且初始化
//---初始化的顺序是按照定义的顺序执行,先初始化data,后初始化p
//---只占用一次内存
//---特殊的类型必须使用,例如:int为一个类,这个类只有一个参数的构造。
//--- int为一个const和引用的时候,不能再private初始化。
class CList
{
int data;
int p;
CList():p(),data()
{
}
}
//----当然这两种初始化的顺序肯定是后者(列表函数初始化)先赋值而且好了。

https://chuanke.baidu.com/v1760453-135963-528979.html

  

《C++数据结构-快速拾遗》 基础常识的更多相关文章

  1. 《C++数据结构-快速拾遗》 手写链表

    注释:吕鑫老师C++对于找工作真的是很好的教程,基本什么方面都讲的很细致,但是对于大多数人只有快进快进再快进~~ 注释:基本链表信息自己百度,这里只是一个快速拾遗过程. 1.链表定义 typedef ...

  2. 《C++数据结构-快速拾遗》 树结构

    1.简单的二叉树结构 #include <iostream> using namespace std; typedef int DATA; //建立二叉树的简单结构 typedef str ...

  3. 黑马程序员_Java基础常识

    一.基础常识 1,软件开发 1)什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 常见的软件 系统软件 如:DOS,windows,Linux等. 应用软件: 如:扫雷,迅雷,QQ等 ...

  4. 安卓布局修改基础常识篇之TextView属性

    [天使]安卓布局修改基础常识篇之TextView属性 在修改布局xml文件时需要熟练掌握一些属性,以下是TextView也就是文本的属性:android:autoLink 是否自动链接网址或邮箱地址: ...

  5. Scala快速入门 - 基础语法篇

    本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...

  6. 深度学习入门者的Python快速教程 - 基础篇

      5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...

  7. Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础

    六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...

  8. Java 数据结构快速入门

    数据结构:栈 简介 栈(stack),又称堆栈,它是运算受限的线性表. 限制 栈(stack)的限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加.查找.删除等操作. 采用该结构的 ...

  9. Objective-C 快速入门--基础(二)

    1.什么是继承?OC中的继承有哪些特点? “继承”是面向对象软件技术当中的一个概念.如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类&quo ...

随机推荐

  1. 数据科学VS机器学习

    数据科学是一个范围很广的学科.机器学习和统计学都是数据科学的一部分.机器学习中的学习一词表示算法依赖于一些数据(被用作训练集)来调整模型或算法的参数.这包含了许多的技术,比如回归.朴素贝叶斯或监督聚类 ...

  2. GTX log 6

    5.24-7.2 相关算法 判断两颗二叉树相等 有两种方法:一种是递归比较.另一种是二叉树的遍历. 先说二叉树的遍历.由于先序遍历 再加上 中序遍历能唯一确定一棵二叉树.故,对这两棵树分别进行先序和中 ...

  3. java小程序(课堂作业04)

    请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想.程序流程图.源代码.结果截图. 1,设计思想: 先输入索要加密的字符串由于此程序比较基础所以只考虑大写字母,然后用toCharAr ...

  4. 各种类型的Json格式化

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.R ...

  5. 前端学PHP之面向对象系列第四篇-----关键字

    public public表示公有,它具有最大的访问权限,被定义为公有的类成员可以在任何地方被访问 如果属性用 var 定义,则被视为公有,如果方法没有设置关键字,则该方法默认为公有 <?php ...

  6. 接口文档管理系统mindoc安装手册

    硬件: centos6.9-64 mysql5.6 首先确保系统安装gcc套件 yum -y gcc 第一步,安装mysql(如果不会在Linux安装mysql,请看下面文章) http://www. ...

  7. live555峰哥的私房菜(二)-----计划任务(TaskScheduler)探讨

    计划任务(TaskScheduler)探讨 上一篇谈到SingleStep()函数会找到三种任务类型并执行之. 这三种任务是: socket handler, event handler, delay ...

  8. Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群(三十六)

    前言 说明的是,本博文,是在以下的博文基础上,立足于它们,致力于我的大数据领域! http://kongcodecenter.iteye.com/blog/1231177 http://blog.cs ...

  9. vo和pojo

    pojo直接描述数据库中的表和字段,一一对应 vo的话,可以多添加些属性,比如code对应的name,或者标识符等等 查询列表的时候也可以直接用vo,但是修改或添加记录必须是pojo QueryVo ...

  10. firefox驱动的下载地址

    https://www.seleniumhq.org/download/