《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 ...
随机推荐
- Docker无法启动问题
启动Docker出现如下错误: PolicyKit daemon disconnected from the bus.We are no longer a registered authenticat ...
- Azkaban介绍+安装部署+实战案例
Azkaban介绍 什么是azkaban?1.工作流的作业调度系统2.通过k.v指令写法描述工作流节点3.可以通过web界面去管理工作流 Azkaban安装部署 2.3.1 准备工作 Azkaban ...
- Linux平台下停止后台进程脚本编写
1.场景说明 [root@master ~]# jps -m 33050 Jps -m 3299 NameNode 3747 ResourceManager 9028 ConsoleConsumer ...
- Hystrix 详细说明
在 Hystrix 入门中,使用 Hystrix 时创建命令并给予执行,实际上 Hystrix 有一套较为复杂的执行逻辑,简单来说明以下运作流程: 在命令开始执行时,会做一些准备工作,例如为命令创建响 ...
- 用monit监控mongodb,崩溃后自动重启mongdb
什么是monit Monit是一个跨平台的用来监控Unix/linux系统(比如Linux.BSD.OSX.Solaris)的工具.Monit特别易于安装,而且非常轻量级(只有500KB大小),并且不 ...
- piwik优化之定时任务生成统计数据
piwik的ui界面,使用起来是无比的慢,让苏南大叔不得不对比wordpress的使用体验.当然了,如果你的服务器足够强大,这些都是小事儿.官方对此给出了一系列的优化建议,大家可以读一下:https: ...
- C++和extern C
http://blog.csdn.net/gongmin856/article/details/44228453 C语言中的可变参数:va_list ,va_start,va_arg,va_end h ...
- uiautomator viewer
前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...
- oracle数据库使用小结
select * from r_patient a where a.birthdate= to_date('1953-03-01','yyyy-mm-dd');select * from r_pati ...
- line-height的理解
font-size:0清除display:inline-block元素换行符间隙,比如两个img标签之间有换行符 行内元素的高度是由其行高决定的. Div或者其他元素内的图片,底部会有间隙,原因是图片 ...