1 动态内存分配和释放
.m .mm .cpp
#import <iostream> import 会自动避免重复编译 #include不会这么做,需要在对应的文件里添加
using namespace std;
new运算符
格式
指针= new 数据类型名字;
指针= new 数据类型名字(初始值);
作用:从内存的动态区域申请指定数据类型所需的存储单元。成功,返回首地址,否则,NULL
new delete成对使用。
2 函数
2.1内联函数:
复杂的循环和分支,递归都不会内联。
2.2函数参数默认值:
c++可以函数的参数可以指定默认值。
默认值要在函数声明中指定,定义的时候不必再指定。
必须从右到左指定参数的默认值。
2.3函数重载:
参数个数,参数类型上有所不同。
代码:
1 // 2 // main.cpp 3 // ArrayTest 4 // 5 // Created by 张学院 on 14-1-6. 6 // Copyright (c) 2014年 com.mix. All rights reserved. 7 // 8 9 #include <iostream> 10 11 #include <string> 12 using namespace std; 13 //-------函数声明 :可以有默认值------- 14 int minValue(int a,int b=10); 15 int maxValue(int a,int b); 16 //--------函数重载maxValue----------- 17 double maxValue(double a,double b); 18 int maxValue(int a,int b ,int c); 19 20 //---------c++的二意性--------------- 21 int test(int a); 22 int test(int a,int b =10); 23 24 //-------函数定义:不用再写默认值------- 25 int maxValue(int a,int b){ 26 return a>b?a:b; 27 } 28 int minValue(int a,int b){ 29 return a<b?a:b; 30 } 31 double maxValue(double a,double b){ 32 return a>b?a:b; 33 } 34 int maxValue(int a,int b ,int c){ 35 36 int temp=maxValue(a,b); 37 return temp>c?temp:c; 38 39 } 40 int test(int a){ 41 42 return a; 43 } 44 int test(int a,int b ){ 45 46 return (a+b); 47 } 48 49 int main() 50 { 51 //new 都是分配在堆里面,要释放内存 52 //分配在栈里面的话,程序结束以后就自动释放。 53 54 //----------变量----------------- 55 int *p = new int(); 56 printf("%d ",*p); 57 printf("size of %d ",sizeof(p)); 58 *p=2; 59 printf("%d ",*p); 60 delete p; 61 62 int *p1 = new int(5); 63 printf("%d ",*p1); 64 delete p1; 65 //----------数组----------------- 66 char *ch = new char[10]; 67 strcpy(ch, "iphone"); 68 printf("%s ",ch); 69 //delete ch;错误的! 70 delete [] ch; 71 //----------函数默认值----------------- 72 int x=3,y=5; 73 int max=maxValue(3, 5); 74 printf("maxvalue=%d ",max); 75 76 int min=minValue(9); 77 printf("minvalue=%d ",min); 78 79 //----------函数重载----------------- 80 double max1=maxValue(2.50, 3.80); 81 printf("double maxvalue=%.3f ",max1); 82 int max2=maxValue(25, 38,15); 83 printf("double maxvalue=%d ",max2); 84 85 86 //---------c++的二意性--------------- 87 //test(1);报错 88 }
输出:
0
size of 8
2
5
iphone
maxvalue=5
minvalue=9
double maxvalue=3.800
double maxvalue=38
C++面向对象,class定义类,private,protected,public成员变量与成员函数
c++类和结构体类似
定义
class 类名{
<成员变量定义>;
。。。。
}
这个方面跟java的类似。
不过java默认的成员变量是protected,c++好像是private。
// // Person.h // ArrayTest // // Created by 张学院 on 14-1-8. // Copyright (c) 2014年 com.mix. All rights reserved. // //防止重复引用 #ifndef __ArrayTest__Person__ #define __ArrayTest__Person__ #include <iostream> using namespace std; class Person{ //---------成员变量-------- public : int age; private : int weight; char name[30]; char sex; //---------成员方法-------- public: void setWeight(int weight); int getWeight(); }; #endif /* defined(__ArrayTest__Person__) */
// // Person.cpp // ArrayTest // // Created by 张学院 on 14-1-8. // Copyright (c) 2014年 com.mix. All rights reserved. // #include "Person.h" //------方法实现格式------ //----返回值 类::方法名 (参数)------ void Person::setWeight(int weight){ //-----this 代表 this->weight=weight; } int Person::getWeight(){ return weight; }
// // main.cpp // ArrayTest // // Created by 张学院 on 14-1-6. // Copyright (c) 2014年 com.mix. All rights reserved. // #include <iostream> #include <string> #include "Person.h"; int main() { //-----类似结构体的创建方式------- Person per; //------类的成员变量默认是private,而结构体是public------ per.age=20; //per.weight per.setWeight(50); printf("the person's weight is %d ",per.getWeight()); }
输出:
the person's weight is 50