前言 C++与Objective-C都是在1980+年代诞生,所以语法糖上面都有很多相似地方,学起来并不难。至于我用的IDE,我直接用的是Xcode,很方便。
国际惯例,打印hello world
1 cout << "hello world" << endl;
这里介绍几个关键词:
cout 输出 cin 输入 endl 换行打印
cout 语法形式:
1 2 cout << x << endl; cout << "x + y =" << x+y << endl;
cin 语法形式:
1 2 cin >> x; cin >> x >> y;
这样的输入、输出方式有哪些便利? 1、不用关注占位符 2、不用关注数据类型 3、不易出现问题
C++命名空间(namespace) 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。
举个例子:同个年级有相同名字的同学,那样为了避免认错人,我们可以把他们分到不同班级里,这样就区分开来了。这里的班级就可以称为命名空间。
关于命名空间描述几点
1、使用namespace定义命名空间。 2、通过命名空间可以区分具有相同名字的变量。 3、通过命名空间可以区分具有相同名字的函数。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 #include <iostream> #include <stdlib.h> using namespace std; namespace myNum //填写命名空间的关键字 { int x = 105; } int main() { // 使用bool类型定义isOdd,作为状态位 bool isFlag = false; if(myNum::x % 2 == 0) { //改变状态位的值,使其为false isFlag = false; } else { //改变状态位的值,使其为true isFlag = true; } // 判断状态位的值 if(isFlag) { // 如果状态位的值为true,则打印变量x是奇数 cout << x是奇数 ; } else { // 如果状态位的值为false,则打印变量x是偶数 cout << x是偶数 ; } return 0; }
C++ 引用 代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <iostream> using namespace std; int main(void) { int x = 3; //定义引用,y是x的引用 int &y = x; //打印x和y的值 cout << x << endl; cout << y <<endl; //修改y的值 y = 100; //再次打印x和y的值 cout << x << endl; cout << y <<endl; return 0; }
C++ const关键字 代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //const #include <iostream> using namespace std; int main(void) { //定义常量count const int count = 3; const int *p = &count; //打印count次字符串Hello C++ for(int i = 0; i < count; i++) { cout << "Hello C++" << endl; } return 0; }
C++函数新亮点 函数参数默认值 1 void fun( int i,int j=5,int k=10 );//有默认参数值的参数必须在参数表的最右端
函数重载 在相同作用域内 用同一个函数名定义的多个函数 参数个数和参数类型不同
内联函数 编译时将函数体代码和实参代替函数调用语句 内联函数关键字:inline
关于C++函数形参默认值的说法
1、当函数有多个形参时,可以都有默认值。 2、当函数有多个形参时,可以都没有默认值。 3、当函数有多个形参且都有默认值时,实参个数可以少于形参个数。
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include <iostream> using namespace std; /** *函数功能:返回a和b的最大值 *a和b是两个整数 */ int getMax(int a, int b) { return a > b ? a : b; } /** * 函数功能:返回数组中的最大值 * arr:整型数组 * count:数组长度 * 该函数是对上面函数的重载 */ int getMax(int *arr,int count) { //定义一个变量并获取数组的第一个元素 int maxNum = arr[0]; for(int i = 1; i < count; i++) { //比较变量与下一个元素的大小 if(maxNum < arr[i]) { //如果数组中的元素比maxNum大,则获取数组中的值 maxNum = arr[i]; } } return maxNum; } int main(void) { //定义int数组并初始化 int numArr[3] = {3, 8, 6}; //自动调用int getMax(int a, int b) cout << getMax(numArr, 3) << endl; //自动调用返回数组中最大值的函数返回数组中的最大值 cout << getMax(numArr[0], numArr[2]) << endl; return 0; }
C++内存管理 什么是内存管理?
内存的本质是资源 操作系统掌管内存资源 对于我们开发者,我们能手动申请与归还 申请/归还内存资源就是内存管理
如图:
内容总结 使用new申请内存,使用delete释放内存 申请内存需要判断是否成功,释放内存需要设空指针 new与delete配套使用
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <string.h> #include <iostream> using namespace std; int main(void) { //在堆中申请100个char类型的内存 char *str = new char[100]; //拷贝Hello C++字符串到分配的堆中的内存中 strcpy(str, "Hello imooc"); //打印字符串 cout << str << endl; //释放内存 delete []str; str = NULL; return 0; }