有人可以指点我一些很好的资源来理解和使用嵌套类吗?我有一些材料,如编程原理和类似IBM知识中心 - 嵌套类的东西
但我仍然无法理解他们的目的.有人可以帮帮我吗?
使用嵌套的公共C++类和枚举的优点和缺点是什么?例如,假设您有一个名为的类printer
,并且此类还存储有关输出托盘的信息,您可以:
class printer
{
public:
std::string name_;
enum TYPE
{
TYPE_LOCAL,
TYPE_NETWORK,
};
class output_tray
{
...
};
...
};
printer prn;
printer::TYPE type;
printer::output_tray tray;
Run Code Online (Sandbox Code Playgroud)
或者:
class printer
{
public:
std::string name_;
...
};
enum PRINTER_TYPE
{
PRINTER_TYPE_LOCAL,
PRINTER_TYPE_NETWORK,
};
class output_tray
{
...
};
printer prn;
PRINTER_TYPE type;
output_tray tray;
Run Code Online (Sandbox Code Playgroud)
我可以看到嵌套私人枚举/课程的好处,但是当谈到公共场所/办公室时,办公室就分开了 - 它似乎更像是一种风格选择.
那么,你更喜欢哪个?为什么?
我正在经历C++ FAQ 2nd Edition, FAQ 9.04- What is an exception specification?
.
在那里,提到如果我们从其签名指定一组预定义异常类型的函数抛出一个意外异常,它应该调用unexpected()->terminate()->abort()
.但是我的程序捕获了意外的异常而不是abort()
它,为什么?
#include<iostream>
using namespace std;
class Type1{};
class Type2{};
class Type3{};
void func() throw(Type1, Type2)
{
throw Type3();
}
int main()
{
try{
func();
}
catch (Type1 &obj1)
{
cout << "Type1 is caught" << endl;
}
catch (Type2 &obj2)
{
cout << "Type2 is caught" << endl;
}
catch (Type3 &obj3)
{
cout << "Type3 is caught" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我得到的输出 …