C++基础笔记(二)C++对C的扩展
Xcode创建C++项目
1、新建一个MAC工程(command line tool)
2、导入头文件
3、修改文件后缀(*.m——>*.mm)
4、修改主函数中的OC代码为C++的代码

动态内存分配
#import <Foundation/Foundation.h>;
#import <iostream>;
using namespace std;
int main(int argc,const char *argv[]){
int *p=new int(4);//分配内存
*p=7;
printf("%d",p);
delete p ;//释放内存
}
delete 指针名; //释放指针所指内存单元
delete [] 指针名; //释放数组内存单元
例如:
int *pi=new int(5);
delete pi;
内联函数 inline
*C++语言提供了内联函数来减少函数调用的开销
在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代码
何时使用内联函数:
- 当一个简单的函数频繁调用时使用内联函数
- 不适合使用内联函数
- 1.复杂的分支与循环
- 2.递归调用
- 3.内联函数只适合于只有1-5行的小函数
函数默认参数
*C++函数的形参可以指定默认值
*默认值要在函数声明中指定,定义时不必再指定
*必须从右到左指定参数的默认值
#import <Foundation/Foundation.h>;
#import<iostream>;
using namespace std; //函数声明时给默认值
int maxValue(int a,int b=7);//有默认值
int maxValue(int a=5,int b=7);//a,b都有默认值
int maxValue(int a=5,int b);//a有默认值,错误写法,从右向左依次默认值
//函数定义时,不要有默认值
int maxValue(int a,int b){
return a>b?a:b;
} int main(int argc,const char *argv[]){
int x=3 ,y=5;
//int max=maxValue(x,y); //console:5
int max=maxValue(x); //console;7
int max=maxValue(100); //console;100
printf("max = %d",max);
return 0;
}
函数重载
在OC中叫复写,在C++中要重载
什么是函数重载
对于一个函数名重新赋予它新的含义,使一个函数名可以定义多个函数。
重载规则
重载函数至少在参数个数,参数类型右参数顺序上有所不同。
#import <Foundation/Foundation.h>;
#import<iostream>;
using namespace std; //函数声明时给默认值
int maxValue(int a,int b=7);//有默认值
int maxValue(int a=5,int b=7);//a,b都有默认值
int maxValue(int a=5,int b);//a有默认值,错误写法,从右向左依次默认值
//函数定义时,不要有默认值
int maxValue(int a,int b){
return a>b?a:b;
}
float maxValue(float a,float b );
float maxValue(float a,float b ){ return a>b?a:b;
} int main(int argc,const char *argv[]){
float x=3.1 ,y=5.1;
float max=maxValue(x,y); //调用float类型的函数
float max=maxValue(3,5); //调用int类型的函数
printf("max = %d",max);
return 0;
}
二一性
不能明确指定调用的函数 。(编译出错)
C++基础笔记(二)C++对C的扩展的更多相关文章
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- Shell脚本编程基础笔记二
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8177697.html 一:输入 1:运行时参数 可以在启动脚本时,在其后输入参数. ./脚本 参数1 参数2. ...
- Python基础笔记(二)
1. List和Tuple List和Tuple是Python的内置的数据类型,区别在于可变和不可变,List用[]表示,Tuple用()表示,它们之间可以相互转换: # List to Tuple ...
- Vue学习计划基础笔记(二) - 模板语法,计算属性,侦听器
模板语法.计算属性和侦听器 目标: 1.熟练使用vue的模板语法 2.理解计算属性与侦听器的用法以及应用场景 1. 模板语法 <div id="app"> <!- ...
- jquery基础 笔记二
动态创建元素 关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子: //使用Dom标准创建元素 var select = document.createElement(" ...
- UWP入门(二) -- 基础笔记
原文:UWP入门(二) -- 基础笔记 不错的UWP入门视频,1092417123,欢迎交流 UWP-04 - What i XMAL? XAML - XML Syntax(语法) ,create i ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
- MYSQL基础笔记(二)-SQL基本操作
SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...
- Python 学习笔记二
笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...
- php代码审计基础笔记
出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...
随机推荐
- HTML5中的canvas基本概念及绘图
* Canvas(画布) * 基本内容 * 简单来说,HTML5提供的新元素<canvas> * Canvas在HTML页面提供画布的功能 * 在画布中绘制各种图形 * Canvas绘制的 ...
- [js开源组件开发]js手机端浮层控件,并有多种弹出小提示,兼容pc端浏览器
js dialog组件,包含alert和confirm的实现 本组件所有的资源均在github上可以查看源代码 GitHub 本dialog的组件的例子请在这里查看 demo dialog js di ...
- Sass学习之路(3)——Sass编译
Sass的编译也是在我们使用Sass的时候必须要经过的一个步骤,因为".sass"和".scss"文件并不能直接使用<link>标签引用,最终其实还 ...
- android 回调函数一:基本概念
1.概念 客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C ...
- 初始block,关于定义的几个小题目
block的定义和C语言指针函数非常相似,就可以照着指针函数的方法去依葫芦画瓢就可以了 block中的^只是用来表示这是一个block对象,和函数指针中的*作用一样,只是一个标识符 下面有三个小例子来 ...
- 【原】PSD图标素材的全自动切图方法,适用于IOS、安卓、web前端等领域
屌丝个人开发者经常遇到的尴尬问题是,自己不会设计UI素材又请不起专业的美工.最好的方式是去网上下载符合自己需求的素材修修改改直接用上.但是,在这个过程中会发现很多下载下来的素材是PSD格式的,很多图标 ...
- 论近年来IT媒体的怪现象
之前在Svbtle上看过一篇文章干掉这帮搞IT新闻的!,作者因为CNET曲解原意,称Instagram要单方面售卖用户自己照片的乌龙事件,致使内心遭受严重刺激,怒吼出「科技媒体记者都应该被枪毙」的言论 ...
- 《ASP.NET MVC 5 框架揭秘》
<ASP.NET MVC 5 框架揭秘> 基本信息 作者: 蒋金楠 出版社:电子工业出版社 ISBN:9787121237812 上架时间:2014-8-1 出版日期:2014 年8月 开 ...
- Effective Java 12 Consider implementing Comparable
Sort array with sorted collection construction. public class WordList { public static void main(Stri ...
- SeekableByteChannel 和 FileChannel
Java7中引入了SeekableByteChannel接口,允许我们定位到文件的任意位置进行读写.注意这里的写,不是新增式的插入,而是覆盖,当然在文件末尾的写,是新增. java.nio.chann ...