《C++数据结构-快速拾遗》 基础常识
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++数据结构-快速拾遗》 基础常识的更多相关文章
- 《C++数据结构-快速拾遗》 手写链表
注释:吕鑫老师C++对于找工作真的是很好的教程,基本什么方面都讲的很细致,但是对于大多数人只有快进快进再快进~~ 注释:基本链表信息自己百度,这里只是一个快速拾遗过程. 1.链表定义 typedef ...
- 《C++数据结构-快速拾遗》 树结构
1.简单的二叉树结构 #include <iostream> using namespace std; typedef int DATA; //建立二叉树的简单结构 typedef str ...
- 黑马程序员_Java基础常识
一.基础常识 1,软件开发 1)什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 常见的软件 系统软件 如:DOS,windows,Linux等. 应用软件: 如:扫雷,迅雷,QQ等 ...
- 安卓布局修改基础常识篇之TextView属性
[天使]安卓布局修改基础常识篇之TextView属性 在修改布局xml文件时需要熟练掌握一些属性,以下是TextView也就是文本的属性:android:autoLink 是否自动链接网址或邮箱地址: ...
- Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...
- 深度学习入门者的Python快速教程 - 基础篇
5.1 Python简介 本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用. 5.1.1 Python简史 Python是一门解释型的高级编程语言,特点是简单明 ...
- Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础
六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...
- Java 数据结构快速入门
数据结构:栈 简介 栈(stack),又称堆栈,它是运算受限的线性表. 限制 栈(stack)的限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加.查找.删除等操作. 采用该结构的 ...
- Objective-C 快速入门--基础(二)
1.什么是继承?OC中的继承有哪些特点? “继承”是面向对象软件技术当中的一个概念.如果一个类A继承自另一个类B,就把这个A称为"B的子类",而把B称为"A的父类&quo ...
随机推荐
- WCF入门教程(二)从零做起-创建WCF服务
通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) 定义了协议,具体什么操作,操作的参数和返回值 ...
- golang gorilla websocket例子
WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. WebSocket通信协议于2011年被IETF定 ...
- 黄聪:实用WordPress SQL查询方法
为所有文章和页面添加自定义字段 这段代码可以为WordPress数据库内所有文章和页面添加一个自定义字段. 你需要做的就是把代码中的‘UniversalCutomField‘替换成你需要的文字,然后把 ...
- CentOS 7下NFS Server作rootfs时的兼容性问题
最近新装CentOS 7,发现原先CentOS 6.3下可用的一块ARM Dev board不能用了,表现为VFS mount挂载rootfs失败. 使用WireShark发现,服务器对client发 ...
- ghost之后仍然中病毒----与病毒的斗争
ghost之后仍然中病毒----与病毒的斗争我的电脑系统是XP,从来都没有安装任何杀毒软件,所有的软件都是安装在C盘的,感觉系统卡顿就用Windows一键还原(基于DOS下的ghost)还原一下,一直 ...
- Global配置接口访问日志以及测试日志记录
在客户端请求接口时,经常会出现接口相应慢,接口等待超时,接口错误,为了这事相信不少后台开发者为此背锅,记下请求日志,拿出有力证据这才是关键. 1.接口请求错误记录 很多时候接口请求出现的500,404 ...
- [UE4]使用Is Locally Controlled解决第一人称和第三人称武器位置问题
一.在第一人称网络游戏中,自己看到的是第一人称,其他玩家看到的自己是第三人称. 二.由于第一人称和第三人称是不同的模型,所以枪在模型上面的插槽位置也会不一样. 三.在武器挂载在人物模型的使用,使用“I ...
- [UE4]自定义函数,快速增加输入参数的一种方法
- [UE4]删除动画:Remove from frame 5 to frame 18
从当前帧开始删除到结尾的动画帧
- typescript接口的概念 以及属性类型接口
/* 1.vscode配置自动编译 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 2.第二步 任务 ...