C++对C的扩充
2019-05-21 11:46
1946 查看
C++对C的一些简单扩充
- C++的输入和输出
cout << “Hello World!” << endl;
cin >> i ; - 用const定义常量
#define : 实际上,只是在预编译的时候进行字符置换,把程序中出现的字符全部置换为用 define定义的。它既不是变量,没有类型,也不占用存储单元,容易出错。
const : const具有变量的属性,有数据类型,占用存储单元,有地址,可以用指针指向它。
且在运行期间,变量的值是不变的。 const常与指针结合。 - 函数原型的声明
int max(int x, int y)
int max();
max();
都是正确的。 - 函数的重载
函数名相同,参数的类型名和个数可以不相同 - 函数模板
这是C中所没有的
所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,凡是函数体相同的函数都可以使用这个模板来代替
#include<iostream> using namespace std; template <typename T> T max() { if(B > a) a = b; if(C > a) a = c; return 0; }
- 有默认参数的函数
这是C中没有的
主要是为了方便有时多次调用同一函数时使用同样的实参。
有两种情况:
① 定义(给出默认值)------> 调用
② 声明(给出默认值)------> 调用 ------> 定义(可以不给出默认值) - 变量的引用 (重要)
这是C中没有的
C++中的引用和JAVA中的引用不同,C++ 中变量的“引用”就是变量的别名
int a; int &b = a;
对变量声明一个引用,并不另开辟空间,都代表同一变量单元。在声明一个引用时,必须同时使之初始化。
C++所以增加“引用“,主要是利用它作为函数参数,以扩充函数传递数据的功能。
#include<iostream> using namespace std; void swap(int &a,int &b) { int temp; temp = a; a = b; b = temp; } int main() { int i = 3, j = 5; swap(i,j); cout << "i = " << i << " " << "j = " << j <<endl; return 0; }
对引用的进一步说明:
- 不能建立void型引用
- 不能建立引用的数组
- 可以将变量的引用赋给一个指针,此时指针指向的是原来的变量。但是不能定义指向引用类型的指针变量
- 可以建立指针变量的引用
- 可以用const对引用加以限定,不允许改变该引用的值,但是它并不阻止改变引用所代表的变量的值。
- 可以用常量或表达式对引用进行初始化,但此时必须有const做声明。
如:int i = 5; const int &a = i + 3;
此时编译系统是这样处理的:生成一个临时变量,用来存放该表达式的值,引用是该临时变量的别名。
还可以用不同类型的变量对之初始化
如:double d = 3.1415926; const int &a = d;
但是未加constdouble d = 3.1415926; int &a = d;
是错误的
- 内置函数
主要是为了解决:规模很小但是频繁使用的函数(因为反复调用函数会比直接在函数内部实现花费的时间要多)
指定内置函数的方法: 只需在函数首行的左端加一个关键字 inline 即可
#include<iostream> using namespace std; inline int max(int a, int b, int c) { if(b > a) a = b; if(c > a) a = c; return a; } int main() { int i = 1,j = 2, k = 3,m; m = max(i,j,k); return 0; }
- 作用域运算符号
:: 它能指定所需要的作用域
例如: 要表示全局变量的时候 ::a - 字符串变量 字符串数组
- 动态分配/撤销内存的运算符 new 和 delete
开辟空间以存放一个结构体变量:
#include<iostream> using namespace std; struct Student { char name[10]; int num; char sex; }; int main() { Student *p; p = new Student; delete p; return 0; }
扩展小结:
- 许使用以//开头的注释
- 对变量的定义可以出现在程序的任意行(但必须在该变量的调用之前)
- 提供了标准输入输出流对象 cin cout
- 可以用const定义常量
- 可以利用函数的重载事项同一函数名代表功能类似的函数
- 可以利用函数模板简化同一类函数编程
- 可以使用带默认值的参数的函数
- 引用
- 内置函数
- 作用域运算符
- string类
- new delete
相关文章推荐
- c++ stl vector(针对扩充空间策略)
- 第二讲:C++对C的扩充(1)
- 第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
- gcc对标准C/C++的扩充
- 第三讲:C++对C的扩充(2)
- C/C++做的一个简单界面程序扩充,向指定窗口发送消息源代码
- C++对C语言的非面向对象特性扩充(2)
- C++对C语言的非面向对象特性扩充(1)
- C++对C语言的非面向对象特性扩充(3)
- C++中的动态空间扩充方法
- [C] C++对C的部分扩充
- C++语言基础 (正在扩充中)
- C++对C的扩充(体现在面向过程程序设计部分)
- C++对C语言的非面向对象特性扩充(1)
- 数据结构(C++实现)--链表(2) 功能扩充
- C++ 图像边界扩充函数copyMakeBorder
- C++的64位整数 (C++的扩充类型)
- 深入浅出C++11(2) -- C++核心语言的扩充
- C++对C语言的非面向对象特性扩充(1)
- 使用VS GDB扩充套件在VS上远端侦错Linux上的C/C++程序