C++异常捕获和动态内存申请
2016-07-22 16:44
316 查看
C++提供了异常捕获类exception,我们可以用这类里面try,catch和through来捕获和抛出异常,也可以继承该类,自己定义异常。
语法为:
关于动态内存的申请
栈:日常c++申请的变量都将占用栈内存,这个都是直接由系统来分配和释放内存;
堆:有的时候不知道需要分配多大内存给变量或者数组,即在程序运行时候才知道,这时候就可以动态的分配内存。
关键词:new,delete,这两个是操作符。而c语言是通过函数来申请和释放内存的,即malloc()和free().
基本语法:
为对象分配内存
输出:
语法为:
#include "stdio.h" #include"iostream" //异常处理类 #include"exception" using namespace std; int fun(int a, int b); double division(int a, int b); int main() { int a; int b; cout << "please input a and b:" << endl; cin >> a; cin >> b; fun(a, b); try { return a / b; } catch (const std::exception&) { cout << "b is 0????" << endl; } int x = 50; int y = 0; double z = 0; try { z = division(x, y); cout << z << endl; } catch (const char* msg) { cerr << msg << endl; } return 0; } int fun(int a, int b) { if (b == 0) // throw "b cannot be zero!!!" ;//抛出异常 cout << "b cannot be zero!" << endl; return 0; } double division(int a, int b) { if (b == 0) { throw "Division by zero condition!"; } return (a / b); }
关于动态内存的申请
栈:日常c++申请的变量都将占用栈内存,这个都是直接由系统来分配和释放内存;
堆:有的时候不知道需要分配多大内存给变量或者数组,即在程序运行时候才知道,这时候就可以动态的分配内存。
关键词:new,delete,这两个是操作符。而c语言是通过函数来申请和释放内存的,即malloc()和free().
基本语法:
//为指针变量申请内存 double *p= NULL; p=new double; *p=100.2234;//在内存空间赋值 delete p;//删除内存 //为数组分配内存 char *p=NULL; p=new char[10];//申请10个char类型空间地址 //删除空间 delete [] p; //为二重数组赋值 char **p=NULL; p=new char[3][4]//申请3*4空间 delete []p;
为对象分配内存
#include "stdio.h" #include"iostream" using namespace std; //定义一个类 class student { public: char name; char age; float whole_score(int chinese,int math, int english) { return chinese + math + english; } //定义一个构造函数 student() { cout << "构造函数!" << endl; } //定义一个析构函数 ~student() { cout << "这个是析构函数!" << endl; } private: int family; protected: int chinese = 100; int math = 20; int english = 120; }; int main() { //申请一个对象 //student s=new student[4]错误,指针可以指向数组第一个元素地址 student * S = new student[4]; delete[] S; return 0; }
输出:
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言二进制思想以及数据的存储
- C语言中计算正弦的相关函数总结