【发布时间】:2020-06-24 21:26:32
【问题描述】:
作为我是编程新手,我只是想在下面的代码中知道我们为什么要写
const char* what() 而不是 char what 在第 6 行下方。
其次,为什么有人写 MyException& e 而不仅仅是 MyException e 为什么我们在 Catch 块中使用参考。请赐教,因为我对 references 和 const 引用某些东西感到有些困惑.......
#include <iostream>
#include <exception>
using namespace std;
class MyException: public exception{
public:
const char* what(){
return "C++ exception";}
};
int main()
{
try{
throw MyException();}
catch(MyException e){
cout<<"Myexception caught"<<endl;
cout<<e.what()<<endl;
}
}
【问题讨论】:
-
每个帖子只问一个问题。你知道
char和const char*这两个类型分别代表什么吗? -
char是单个字符。当您想发送多于一封信时,它就不是那么有用了。"C++ exception"是 String Literal,而字符串字面量是一个常量数组 (const char [exactly_the_right_size]),其字符大小正好适合保存字符串及其终止的 null。这个字符数组将decay指向一个指向常量字符数组的指针(一个const char *) -
这一切都应该在a non-fraudulent C++ programming text 的早期进行介绍。 Stack Overflow 不是好的参考资料的替代品,整个互联网更有可能让你成为一个糟糕的程序员而不是一个好的程序员。拿一本书。读了这本书。做练习。学习在受控环境中编程,您的学习经验将减少数年。
-
@ThomasSablik 通过引用捕获不仅是关于复制/不复制,而且是关于不切片,尽管在这里无关紧要
-
@idclev463035818 是的,你是对的。我完全忘记了。
标签: c++ reference c++14 constants