C++基础知识部分之五

1. 引用

大多数函数的模式是采用0个或者多个参数执行计算,然后返回一个结果。但是当你试图返回两个值时怎么办?引用。

&与类型一起使用来说明这个变量是一个引用。可以像使用普通变量一样使用这个变量,但是实际上这是一个指向原始变量的指针,每次修改都会改变存储在那个存储单元里面的内容。假设有这样一个程序:

#include<iostream>
using namespace std;
int addone1(int i)
{
i++;
}


int addone2(int& i)
{
i++;
}
int main()
{
int i=1;
addone1(i);
cout<<i<<endl;
addone2(i);
cout<<i<<endl;
}

//输出的结果是1  2


2. C++中的字符串

在C++中有三种使用字符串的方法。

(1)C风格,将字符串看成数组;

(2)C++风格,将字符串封装在一个易于使用的string类型里

(3)最后就是不是标准的普通类。

C++string类型在<string>头文件中定义,string类型也位于std名称空间中。


3. 异常

C++是一种非常灵活的语言,但是带来的问题就是 不是那么安全。异常就是试图增加一点安全性的语言特性。

异常是一种无法预料的情形。例如,如果编写一个获取web页面的函数,就有几件事情可能出错,包含页面的Internet主机处于关机状态,页面可能是空白的,连接可能丢失,等等。处理这种情况办法就是,从函数返回特定的值(最熟悉的404)。异常提供了吹了此类问题的更好办法。

当某段代码检测到异常时,就会抛出一个异常,另一段代码会捕获这个异常然后执行恰当的操作。例如:

#include<stdexcept>
#include<iostream>
#include<exception>
double divideNumbers(double numerator,double denominator)
{
if(denominator == 0)
{
throw std::invalid_argument("Denominator cannot be 0.");
}
return numerator / denominator;



int main()
{
try
{
std::cout<<divideNumbers(2.54,0.5)<<std::endl;  //正常执行
std::cout<<divideNumbers(6.8,0)<<std::endl;  //抛出一个异常
std::cout<<divideNumbers(2.54,0.5)<<std::endl;  //不会执行
}
catch(const std::exception& exception1)
{
std::cout<<"Exception caught: "<<exception1.what()<<std::endl;
}
return 0;
}

C++的异常非常灵活,为了正确使用异常,需要理解抛出异常时堆栈变量的行为,必须正常捕获并处理必要的异常。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值