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. 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等

    转自:http://www.cnblogs.com/qianyiliushang/p/4348584.html 准备工作: 安装JDK,推荐使用1.7以上版本,并设置JAVA_HOME 下载Jmete ...

  2. 阿里云 CentOS安装Git

    一.Git的安装 1. 下载Git wget https://github.com/git/git/archive/v2.8.0.tar.gz 2. 安装依赖 sudo yum -y install ...

  3. sparkSQL以JDBC为数据源

    一.环境准备 安装oracle后,创建测试表.数据: create table test ( username varchar2(32) primary key , password varchar2 ...

  4. openwrt挂载摄像头及视频保存

    一.编译选项的选择: -> Utilities ->usbutils (这个里面包含lsusb的命令,是查看你的摄像头型号的) -> Kernel modules -> I2C ...

  5. AXI Quad SPI

    AXI Quad SPI 信息来源

  6. Winform 实现无边框窗体移动功能

    #region 窗体移动 [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImp ...

  7. 黄聪:在.NET中使用GeckoFX 29

    GeckoFX is a .NET control, that works similarly to “System.Windows.Forms.WebBrowser” Control, while ...

  8. 《剑指offer(第二版)》面试题55——判断是否为平衡二叉树

    一.题目大意 输入一颗二叉树,判断该二叉树是否为平衡二叉树(AVL树). 二.题解 <剑指offer>上给出了两种解决方式: 1.第一种是从根节点开始,从上往下遍历每个子节点并计算以子节点 ...

  9. Concurrent包详解及使用场景

    Concurrent包是jdk1.5所提供的一个针对高并发进行编程的包. 1.阻塞式队列 - BlockingQueue 遵循先进先出(FIFO)的原则.阻塞式队列本身使用的时候是需要指定界限的. 在 ...

  10. JVM异常之:方法区溢出OutOfMemoryError: PermGen space

    1.方法区溢出(Perm持久代溢出) 在jdk1.6及之前的版本中,常量池放在Perm区也即是方法区中,所以在jdk1.6版本中,常量池溢出可以说是方法区溢出. 示例一: 方法区溢出的示例见<J ...