void SlowSocket::close(){} 这是直接给类添加类方法吗?

我在看一个代码的时候:

void SlowSocket::close() {
  if (-1 == sockfd_) return;

  slowlog(LOG_DEBUG, "closing slow socket %d\n", sockfd_);
  if(ssl_) {
    SSL_free(ssl_);
    SSL_CTX_free(ssl_ctx_);
    ssl_ = NULL;
    ssl_ctx_ = NULL;
  }
  requests_to_send_ = 0;
  followups_to_send_ = 0;
  ::close(sockfd_);  // 这句话看不明白
  sockfd_ = -1;
}

有两个地方不理解:
1)void SlowSocket::close(){}

这是给类SlowSocket添加类方法close()吗?
2)方法中直接写:
::close(sockfd_);
这是什么意思呢?

阅读 1.7k
2 个回答

作用域,比如:

void close(int id) {
    printf("global close");
}
class Foo {
    void close() {
        ::close(1);
    }
}

找本书打打基础吧

  1. 是的,但要先在类中声明

    class Class {
        int method();
    }
    int Class::method() {
        // ...
    }
    
    class Class2 {
        int method() {
            // OK ...
        }
    }
  2. 这指的是调用全局方法。当类中和全局方法有重名时这么写。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题