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 --------------------------- ...
随机推荐
- Mysql进阶(二)
一.触发器 对某个表进行[增/删/改]操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行[增/删/改]前后的行为. 创建视图 # 插入前CREATE TRIGGER ...
- ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http
在.NET环境下,万物皆对象,在HttpRuntime收到请求之后,立即将通过HttpWorkerRequest传递的参数进行分析和分解,创建方便用于网站应用程序处理用的对象,其中主要涉及到两个对象类 ...
- 身份证校验(c++实现)
描述: 我国国标[GB 11643-1999]中规定:公民身份号码是18位特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码 ...
- 关于一个js连续赋值问题之我见(词略穷,见谅)
前几天在搜索面试题时发现了这么一段代码,执行完后感觉完全不与所想的一样 var a = { n : 1 }; var b = a; a.x = a = {n : 2}; console.log(a.x ...
- DAX 2009 for Retail's P job does not work after restoring AX database from another environment.
This time, it's P job. We already re-configured profiles, distribution locations, distribution grou ...
- FIM 2010: Kerberos Authentication Setup
The goal of this article is to provide some background information regarding the Kerberos related co ...
- SharePoint 2013: Search Architecture in SPC202
http://social.technet.microsoft.com/wiki/contents/articles/15989.sharepoint-2013-search-architecture ...
- 如何启动或关闭oracle的归档(ARCHIVELOG)模式
参考文献: http://www.eygle.com/archives/2004/10/oracle_howtoeci.html 1.管理员身份连接数据库 C:\Users\Administrator ...
- Intent传递对象的两种方法
Android为intent提供了两种传递对象参数类型的方法 分别需要使实体类实现Serializable接口.Parcelable接口 首先我们要知道,传递对象,需要先将对象序列化 一.那么为什么要 ...
- Android线程池(一)
本篇文章主要介绍Android自带的线程池的使用. 首先要引入线程池的概念 线程池:是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 线程池线程都是后台线程.每个线 ...