c++ 知识2
来源:互联网 发布:淘宝的实名认证在哪里 编辑:程序博客网 时间:2024/06/05 14:22
函数重载
https://github.com/hongwangli/study_cpp/blob/master/test_010_reload_template.cpp
重载是为了减少麻烦才产生的。 打个比方,你为了要计算两个数的和,写了一个函数,如下:int intSum(int nA,int nB) { return (nA+nB); } //这个只是计算了两个整形的和,或许你还要写一个计算浮点数和的函数: float floatSum(float fA,float fB) { return (fA+fB); } //或许你还需要计算一个浮点数和一个整形的和,还需要一个函数: float float_intSum(float fA,int nB) { return (fA+(float)nB); }
甚至,如果你用C++的话,你还会需要一些计算对象之间的和,等等。。。。
当写了这么多的函数,在实际运用中根据需要选择不同的函数来计算某些类型的和,我想你也记不住这么多函数。用重载吧,只需要记住一个函数名就行了。
///////////////////////////////////////////////////////////////////////////////函数Fun_Sum的重载 int Fun_Sum(int A,int B) { return (A+B); } float Fun_Sum(float A,float B) { return (A+B); } double Fun_Sum(double A,double B) { return (A+B); } UINT Fun_Sum(UINT A,UINT B) { return (A+B); }
//等等,可以的话这种重载写数十个也不会重复。
//好了,以后你想要计算某两个类型的和时(可以是不同类型),不需要去想该用哪个计算和的函数,统统调用函数Fun_Sum就行了,至于到底是其中的哪一个函数在被调用,让编译器去伤脑筋吧。
重载函数的参数个数、参数类型、参数顺序、这三者中至少要有一个不同,才能进行函数重载,因为调用重载函数就是要根据这个来区分具体的调用哪个函数,而函数的返回值可以相同可以不同函数模版
template<typename T> 通用函数定义或template<class T> 通用函数定义
但是用函数模板只能用于 函数的参数个数相同而类型不同的情况,如果参数个数不同,则不能使用函数模板。
变量定义
int a;//定义一个整型变量,没有赋值
int *a; // 定义一个整型的指针变量
int a(3); int a=3 // 两种形式等价。定义并赋值
int *p = new int; //开辟一个存放整数的存储空间,p为指向该存储空间的地址(即指针)
int *p = new int(100); //开辟一个存放整数的空间,并指定该整数的初值为100,p为指向该存储空间的地址
int *p = new int[3]; // 申请一个整型的动态数组长度为3;返回首元素地址
new int[5][4]; //开辟一个存放二维整型数组(大小为5*4)的空间,返回首元素的地址
int 可替换 float,char等。也可以是自定义的struct,class 及模版 T;头指针,头节点
如下:
- 只是个指针变量,自己没有结点内容,所以自己就能指向某个结点。头结点是node,头指针是phead
T *phead;
T *node = new T();
phead = node; - 是指针,也有结点内容,所以只能使用本身的next指向下一结点了。头结点是phead,头指针也是phead
T *phead = new T();
T *node = new T();
phead->next = node;
- 只是个指针变量,自己没有结点内容,所以自己就能指向某个结点。头结点是node,头指针是phead
struct结构体
看来真像某些人说的,struct与class是小异大同。struct默认访问权限是public,class是private;class有继承,多态机制,而struct没有。
struct people{string name;int age;};struct node{people peo;node *next;node(people x):peo(x),next(NULL){};}; people p1,p2; p1.name = "howard"; p1.age = 28; p2.name = "mali";p2.age = 30; node *n = new node(p1); cout << "n->peo.name: " << n->peo.name << endl;
链表
一个结构体变量指向首地址,其他节点的地址及数据要逐步去访问,每个结构体指针变量指向一个节点。
http://blog.csdn.net/lzm18064126848/article/details/50819574
https://github.com/hongwangli/study_cpp/blob/master/test_011_struct_and_linklist.cppvirtual
当基类调用virtual修饰的方法时候,则根据多态性调用派生类
如果基类方法没有virtual修饰,则正常调用基类的静态函数。
https://github.com/hongwangli/study_cpp/blob/master/test_013_virtual.cppnew创建对象和不用new创建
http://blog.163.com/zhuandi_h/blog/static/18027028820129169538815/
http://www.jb51.net/article/40017.htmif else 两条以上的陈述语句必须用{}
if () statement;else statement;if () { statement1; statement2;}
break continue
continue就不执行本次循环后面的语句,直接进入下一次循环
break也不执行本次循环后面的语句,并且跳出循环,不再执行了
- 【C/C++】知识回顾2
- c语言知识总结2
- C/C++一些知识2(指针)
- C语言小知识复习2
- C语言重点知识复习2
- C语言小知识(2)
- C知识(1)
- C语言知识列表
- C#+SQLService基础理论知识
- C一些知识总结
- 知识小记(C#)
- C语言 小知识!~
- C 小知识整理
- C语言知识补遗
- c语言 小知识
- C一些知识总结
- C++string知识大全
- keil c 知识总结
- shell脚本中-n是判断一个变量是否是否有值
- Python异步编程Async/Await
- spring mvc 起步
- jquery动态加载页面 load方法 注意事项
- WPF TabControl 美化
- c++ 知识2
- TextView基本使用以及android坑
- ios 播放系统声音
- [cs229] k-means 图像压缩
- java操作redis3.0集群
- adnroid.appwidget.AppWidgetProvider
- mongoDB——自动分片介绍及简单实现
- Android:finished with non-zero exit value
- 最大子列和问题的四种不同时间复杂度的算法实现