0%

cpp中的const一些用法

起因

今天在菜鸟编程中复习cpp的时候,看到了异常处理。就是try catch throw 三兄弟。python中就是try except else finally raise
两者是很相似的。中间一个个代码如下面所示

异常处理

就是try尝试运行,错误就到catch,catch中进行错误捕捉。还有一个就是throw,这个就是运行的时候,直接抛出错误这个就像人为中断错误,毕竟catch捕捉的东西有限。一旦执行throw就会立刻停止程序。

Const
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
#include <iostream>
#include <exception>
using namespace std;

struct MyException : public exception
{
const char * what () const throw ()
{
return "C++ Exception";
}
};

int main()
{
try
{
throw MyException();
}
catch(MyException& e)
{
std::cout << "MyException caught" << std::endl;
std::cout << e.what() << std::endl;
}
catch(std::exception& e)
{
//其他的错误
}
}

为什么会出现Const呢?首先,
const char* a
char* const b
const char* const c
const void * fun()
这四个都是见怪不怪的用法了。
但是我看到一个
const void *what() const throw()
重写throw的功能。如下代码所示

结果如下

MyException caught
C++ Exception

非常有意思,为什么函数还可以const呢 ?const char * what () const throw ()

我去网上和编译实测了一下,发现确实可以的。但是有限制
1.只能是结构体和类里面的成员方法(cpp中类和结构体都可以继承和实现函数的。)
2.只能调用同为const的函数
3.不能修改类里面的成员对象
4.其他函数可以正常调用const修饰了的函数
5.只能调用同为const的实例 如 const A a; 此时就能使用a

结语

大家感兴趣的话,可以去尝试用一下,我个人感觉,这个东西还是有意义,反正内部被修改可以作用一些,返回当前状态的接口上面如return systemTiem.hour;

-------------下次的来访是什么时候呢[doge]-------------