Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么我们使用const char*func()而不是char func()_C++_Reference_C++14_Constants - Fatal编程技术网

C++ 为什么我们使用const char*func()而不是char func()

C++ 为什么我们使用const char*func()而不是char func(),c++,reference,c++14,constants,C++,Reference,C++14,Constants,由于我是编程新手,我只想在下面的代码中了解我们为什么要编写 const char*what代替下面第6行的char what。 第二,为什么有人写了MyException&e,而不仅仅是MyException&e,为什么我们在Catch块中使用引用。请告诉我,因为我对引用和常量引用有点困惑 这里有两个原因。字符表示单个字符,如或,。常量字符*可以表示整个字符串,因此您可以: char getChar() { return 'M'; } const char* getWord() { return

由于我是编程新手,我只想在下面的代码中了解我们为什么要编写 const char*what代替下面第6行的char what。 第二,为什么有人写了MyException&e,而不仅仅是MyException&e,为什么我们在Catch块中使用引用。请告诉我,因为我对引用和常量引用有点困惑


这里有两个原因。字符表示单个字符,如或,。常量字符*可以表示整个字符串,因此您可以:

char getChar() { return 'M'; }
const char* getWord() { return "String"; }

第二个原因是因为类MyExchange是从STD::Exchange派生的,它有一个,所以当我们抛出MyExtExchange并捕获它时,调用它返回的C++异常< /P>


之所以使用MyException&是因为我们不需要副本,只需要引用。复制也可能导致错误,这取决于您对捕获的异常所做的操作。另外,副本会调用可能抛出的构造函数,这将是一个混乱。

请在每篇文章中只问一个问题。你知道char和const char*各自代表什么类型吗?char是单个字符。当您想发送多封信时,这不是很有用。C++异常是一个字符串,字符串是一个常数数组conchchar(确切地说是大小),字符的大小正好保持字符串及其终止空值。这个字符数组将指向一个指向常量字符数组的指针,一个常量字符*这应该在本文的早期介绍。堆栈溢出并不能代替好的参考资料,互联网作为一个整体更可能让你成为一个差劲的程序员,而不是一个好的程序员。买本书。读这本书。做练习。在受控环境中学习编程,你的学习经验将减少数年。@ThomasSablik通过引用捕获不仅是关于复制/不复制,而且是关于不切片,尽管并不重要here@idclev463035818是的,你说得对。我完全忘记了。通过引用捕获的更重要的原因是避免切片cf。OPs代码也可以捕获std::exception&,但是如果MyException有成员,则捕获std::exception将是有问题的
char getChar() { return 'M'; }
const char* getWord() { return "String"; }