相关疑难解决方法(0)

508
推荐指数
8
解决办法
5万
查看次数

好坏:在构造函数中调用析构函数


休息:我不认为这实际上是同一个问题,另一个问题是关于手动调用析构函数的一般问题。这是在类本身内部的创建过程中。仍然想知道执行此操作时会发生什么,如下面的问题所述。


起初,我认为这很糟糕,真的很糟糕。只需分析这两个人编写的构造函数的这段代码(请参见下文),并需要将其转换为Delphi对象Pascal。它的行为必须与C版本相同。我不喜欢这种风格,非常丑陋,但是没关系。

另一件事,在代码的两个阶段中,当失败时会调用析构函数(我想关闭连接,但是删除后会自动调用析构函数,为什么还是要这样做呢?)。我认为这不是做到这一点或错过某些东西的方法吗?

另外,在调用析构函数之后,他们想抛出一个异常(是吗?),但是我认为这将永远不会执行,并且当您手动访问或删除它时会导致另一个异常。


Serial::Serial(
  std::string &commPortName,
  int bitRate,
  bool testOnStartup,
  bool cycleDtrOnStartup
) {
  std::wstring com_name_ws = s2ws(commPortName);

  commHandle =
    CreateFileW(
      com_name_ws.c_str(),
      GENERIC_READ | GENERIC_WRITE,
      0,
      NULL,
      OPEN_EXISTING,
      0,
      NULL
    );

  if(commHandle == INVALID_HANDLE_VALUE)
    throw("ERROR: Could not open com port");
  else {
    // set timeouts
    COMMTIMEOUTS timeouts;

    /* Blocking:
        timeouts.ReadIntervalTimeout = MAXDWORD;
        timeouts.ReadTotalTimeoutConstant = 0;
        timeouts.ReadTotalTimeoutMultiplier = 0;
       Non-blocking:
        timeouts = { MAXDWORD, 0, 0, 0, 0}; */

    // Non-blocking with short timeouts
    timeouts.ReadIntervalTimeout = 1;
    timeouts.ReadTotalTimeoutMultiplier = …
Run Code Online (Sandbox Code Playgroud)

c++ windows constructor destructor

5
推荐指数
1
解决办法
971
查看次数

在C++中是在对象创建之前或之后调用的构造函数吗?

我找到了关于java的这个问题的一些答案,但没有特别关于c ++.所以我在Java中读到了首先创建对象,然后调用构造函数.我想知道这是否与c ++相同?此外,如果是这种情况,那么拥有默认构造函数有什么意义呢?是继承目的吗?

c++ constructor

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

C++ - 构造函数中的异常

我有个问题。我必须在构造函数 One() 中抛出一个异常,但不知道我该如何捕捉它。有人可以建议吗?我试过这个方法:从构造函数抛出异常如果构造函数抛出异常会发生什么?

我的代码:

class One
{
    int a, b;

public:

    One()
    {
        a = 7;
        b = 0;
        if (b == 0)
        {
            throw "except";
        }       
    }

};
int main()
{
    One j;
    try 
    {
        cout << "good"; 
    }
    catch(const char *str)
    {
        cout << str;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ exception c++14

0
推荐指数
1
解决办法
113
查看次数