1. <legend id='RX59k'><style id='RX59k'><dir id='RX59k'><q id='RX59k'></q></dir></style></legend>
        <bdo id='RX59k'></bdo><ul id='RX59k'></ul>

      <small id='RX59k'></small><noframes id='RX59k'>

    2. <tfoot id='RX59k'></tfoot>
      <i id='RX59k'><tr id='RX59k'><dt id='RX59k'><q id='RX59k'><span id='RX59k'><b id='RX59k'><form id='RX59k'><ins id='RX59k'></ins><ul id='RX59k'></ul><sub id='RX59k'></sub></form><legend id='RX59k'></legend><bdo id='RX59k'><pre id='RX59k'><center id='RX59k'></center></pre></bdo></b><th id='RX59k'></th></span></q></dt></tr></i><div id='RX59k'><tfoot id='RX59k'></tfoot><dl id='RX59k'><fieldset id='RX59k'></fieldset></dl></div>

        为什么在 C++ 中存在从指针到 bool 的隐式类型转换?

        时间:2023-08-29

        <i id='asa7w'><tr id='asa7w'><dt id='asa7w'><q id='asa7w'><span id='asa7w'><b id='asa7w'><form id='asa7w'><ins id='asa7w'></ins><ul id='asa7w'></ul><sub id='asa7w'></sub></form><legend id='asa7w'></legend><bdo id='asa7w'><pre id='asa7w'><center id='asa7w'></center></pre></bdo></b><th id='asa7w'></th></span></q></dt></tr></i><div id='asa7w'><tfoot id='asa7w'></tfoot><dl id='asa7w'><fieldset id='asa7w'></fieldset></dl></div>

      1. <legend id='asa7w'><style id='asa7w'><dir id='asa7w'><q id='asa7w'></q></dir></style></legend>

        • <small id='asa7w'></small><noframes id='asa7w'>

          <tfoot id='asa7w'></tfoot>
            <tbody id='asa7w'></tbody>
                  <bdo id='asa7w'></bdo><ul id='asa7w'></ul>

                  本文介绍了为什么在 C++ 中存在从指针到 bool 的隐式类型转换?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  考虑类 foo 有两个这样定义的构造函数:

                  Consider the class foo with two constructors defined like this:

                  class foo
                  {
                  public:
                      foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
                      foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
                  };
                  

                  用字符串字面量实例化类,猜猜调用的是哪个构造函数?

                  Instantiate the class with a string literal, and guess which constructor is called?

                  foo a ("/path/to/file");
                  

                  输出:

                  构造函数 2

                  我不了解您,但我不认为这是编程史上最直观的行为.不过,我敢打赌它有一些巧妙的理由,我想知道那可能是什么?

                  I don't know about you, but I don't find that the most intuitive behavior in programming history. I bet there is some clever reason for it, though, and I'd like to know what that might be?

                  推荐答案

                  在 C 中写这个很常见

                  It's very common in C to write this

                  void f(T* ptr) {
                      if (ptr) {
                          // ptr is not NULL
                      }
                  }
                  

                  你应该创建一个 const char* 构造函数.

                  You should make a const char* constructor.

                  这篇关于为什么在 C++ 中存在从指针到 bool 的隐式类型转换?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:C ++中字符串文字的类型是什么? 下一篇:long 和 int 数据类型的区别

                  相关文章

                    • <bdo id='kXQ54'></bdo><ul id='kXQ54'></ul>
                    <legend id='kXQ54'><style id='kXQ54'><dir id='kXQ54'><q id='kXQ54'></q></dir></style></legend><tfoot id='kXQ54'></tfoot>

                    <small id='kXQ54'></small><noframes id='kXQ54'>

                  1. <i id='kXQ54'><tr id='kXQ54'><dt id='kXQ54'><q id='kXQ54'><span id='kXQ54'><b id='kXQ54'><form id='kXQ54'><ins id='kXQ54'></ins><ul id='kXQ54'></ul><sub id='kXQ54'></sub></form><legend id='kXQ54'></legend><bdo id='kXQ54'><pre id='kXQ54'><center id='kXQ54'></center></pre></bdo></b><th id='kXQ54'></th></span></q></dt></tr></i><div id='kXQ54'><tfoot id='kXQ54'></tfoot><dl id='kXQ54'><fieldset id='kXQ54'></fieldset></dl></div>