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. C# 打印、输入和for循环的使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Maven下载项目依赖jar包和使用方法

    一.Maven3.5.0安装与配置+Eclipse应用 参考:Maven3.5.0安装与配置+Eclipse应用 二.http://mvnrepository.com/ 此处以http://mvnre ...

  3. KC705开发板关于MIG的配置

    KC705开发板关于MIG的配置

  4. WPF Demo15 MVVM

    项目结构如下: <Window x:Class="MVVMDemo.MainWindow" xmlns="http://schemas.microsoft.com/ ...

  5. 可用于在 Microsoft.NET Framework 4.0 中的 ASP.NET 浏览器定义文件的修补程序

    http://support.microsoft.com/kb/2600088 此修补程序为 Internet Explorer 和 Mozilla Firefox 在浏览器定义文件引入了更新的定义. ...

  6. Facebook Login api

    http://blog.kenyang.net/2012/01/androidfacebook-login-api.html http://blog.kenyang.net/2012/01/faceb ...

  7. Java线程池管理及分布式Hadoop调度框架搭建

    平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发工程师却在这个上面吃了不少苦头. 怎么做一套简便的线程开发模 ...

  8. 直接突破百度网盘,用IDM或者迅雷下载。

    直接突破百度网盘,用IDM或者迅雷下载.推荐浏览器: 360 ,CHORME360,: 打开网盘下载页,然后F12→找到CONSOLE→刷新→输入代码“Object.defineProperty(th ...

  9. 时间复杂度On和空间复杂度O1是什么意思?

    (1).把输入规模看成x轴,所花时间/空间看成y轴 O(n)就是y=x,y随x的增长而线性增长.也就是成正比,一条斜线. O(1)就是y=1,是一个常量,不管x怎么变,y不变,一条与x轴平行的线. ( ...

  10. 哈希表(Hash Table)原理及其实现

    原理 介绍 哈希表(Hash table,也叫散列表), 是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映 ...