小编Gee*_*eho的帖子

前向声明包括,声明包括(ClassFwd.h + Class.h)

在Effective C++(第3版)中,Scott Meyers在第31项中建议,除了经典的声明(.h)和定义(.cpp)文件之外,类应该具有前向声明包含文件(fwd.h),哪个类不需要完整定义可以使用,而不是向前声明自己.

我有点看到它的情况,但我真的不认为这是一个可行的选择...它似乎很难维持,相当矫枉过正,几乎没有必要.

但是,我可以看到它用于模板前向声明,它相当重.但对于简单的课程?这似乎很难维护,并且会创建一大堆几乎空的包含文件,这些文件只是用于非常小的目的......值得麻烦吗?

这是一个例子:

// Class.h
class Class
{
    Class();
    ~Class();
};

// ClassFwd.h
class Class;

// Class.cpp
Class::Class()
{
}

Class::~Class()
{
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

你们有什么感想?如果这是一个很好的做法?

注意我最感兴趣的是这个练习的论据,看看我是否错过了一些让我同意Scott Meyers的内容.

c++ include forward-declaration effective-c++

11
推荐指数
1
解决办法
2533
查看次数

强保证方法称为强保证方法

当我有一个方法调用一组提供强有力保证的方法时,我经常遇到回滚更改的问题,以便也有一个强大的保证方法.我们来举个例子:

// Would like this to offer strong guarantee
void MacroMethod() throw(...)
{
  int i = 0;
  try
  {
    for(i = 0; i < 100; ++i)
       SetMethod(i); // this might throw
  }
  catch(const std::exception& _e)
  {
    // Undo changes that were done
    for(int j = i; j >= 0; --j)
      UnsetMethod(j); // this might throw
    throw;
  }
}

// Offers strong guarantee
void SetMethod(int i) throw(...)
{
  // Does a change on member i
}

// Offers strong guarantee
void …
Run Code Online (Sandbox Code Playgroud)

c++ exception-handling exception

3
推荐指数
1
解决办法
191
查看次数