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 运算符 作用:释放用new创建的动态存储单元
使用格式:
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的扩展的更多相关文章

  1. JavaScript基础笔记二

    一.函数返回值1.什么是函数返回值    函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...

  2. Shell脚本编程基础笔记二

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/8177697.html 一:输入 1:运行时参数 可以在启动脚本时,在其后输入参数. ./脚本 参数1 参数2. ...

  3. Python基础笔记(二)

    1. List和Tuple List和Tuple是Python的内置的数据类型,区别在于可变和不可变,List用[]表示,Tuple用()表示,它们之间可以相互转换: # List to Tuple ...

  4. Vue学习计划基础笔记(二) - 模板语法,计算属性,侦听器

    模板语法.计算属性和侦听器 目标: 1.熟练使用vue的模板语法 2.理解计算属性与侦听器的用法以及应用场景 1. 模板语法 <div id="app"> <!- ...

  5. jquery基础 笔记二

    动态创建元素 关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子: //使用Dom标准创建元素 var select = document.createElement(" ...

  6. UWP入门(二) -- 基础笔记

    原文:UWP入门(二) -- 基础笔记 不错的UWP入门视频,1092417123,欢迎交流 UWP-04 - What i XMAL? XAML - XML Syntax(语法) ,create i ...

  7. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

  8. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  9. Python 学习笔记二

    笔记二 :print 以及基本文件操作 笔记一已取消置顶链接地址 http://www.cnblogs.com/dzzy/p/5140899.html 暑假只是快速过了一遍python ,现在起开始仔 ...

  10. php代码审计基础笔记

    出处: 九零SEC连接:http://forum.90sec.org/forum.php?mod=viewthread&tid=8059 --------------------------- ...

随机推荐

  1. C#常用集合的使用(转载)

    大多数集合都在System.Collections,System.Collections.Generic两个命名空间.其中System.Collections.Generic专门用于泛型集合. 针对特 ...

  2. CSS基础选择器温故-1

    1.基本选择器语法 2.浏览器兼容性:浏览器对基本选择器都是一路绿灯通行,可以放心使用. 3.通配选择器:选择所有元素,也可以选择某个元素下的所有元素 (1)选择所有元素: *{margin: 0;p ...

  3. Vue自定义过滤器

    gitHub地址: https://github.com/lily1010/vue_learn/tree/master/lesson05 一 自定义过滤器(注册在Vue全局) 注意事项: (1)全局方 ...

  4. CSS :first-child 伪类

    CSS :first-child 伪类  向元素的第一个子元素添加样式,示例如下:   例 1 - 匹配第一个 <p> 元素(第一个段落显示为红色) <style type=&quo ...

  5. How to Use Telnet to Test SMTP Communication

    Topic Last Modified: 2005-05-24 Telnet is an extremely useful tool for troubleshooting issues relate ...

  6. 参加2015年TOP100会议的零散笔记

    2015年出差很少,感到整个技术都已经荒废了,收到12月份TOP100的会议通知后,还是去充点电吧,不然心慌啊.对于软件大会这种大杂烩式的会议已经没有多少兴趣了,看看这个TOP100组织得有何不同? ...

  7. ubuntu下nagios配置

    参考文献: http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html http://my.oschina.net/duangr/blo ...

  8. Android项目实战(九):CustomShapeImageView 自定义形状的ImageView

    一个两年前出来的第三方类库,具有不限于圆形ImageView的多种形状ImageView,项目开发必备 github下载地址:https://github.com/MostafaGazar/Custo ...

  9. java.lang.RuntimeException: Fail to connect to camera service问题

    做音视频录制功能的真机调试的时候出现这个问题 错误意思为无法连接到相机服务 可能由两种情况导致 1.配置清单文件没有设置相应的权限 <uses-permission android:name=& ...

  10. UIButton在不同状态下显示不同背景色

    参考自:原文地址(内容与原文并无区别,只是自己以后方便使用整理了一下) 1.UIButton的background是不支持在针对不同的状态显示不同的颜色. 2.UIButton的backgroundI ...