代码之家  ›  专栏  ›  技术社区  ›  Björn Pollex

指针是C++中的基元类型吗?

  •  5
  • Björn Pollex  · 技术社区  · 15 年前

    我想知道最后一个构造函数 std::string 提到 here . 它说:

    template<class InputIterator> string (InputIterator begin, InputIterator end);
    

    如果 InputIterator 是一个整数类型,通过类型转换begin和end来调用它,它的行为与第六个构造函数版本(位于此版本正上方的构造函数)一样:

    string(static_cast<size_t>(begin),static_cast<char>(end));
    

    在任何其他情况下,参数都被视为迭代器,内容被初始化为从迭代器引用的元素开始到迭代器引用的元素结束之前的元素的值。

    那么如果 输入器 是一个 char * ?

    编辑: 好的,我的坏。我刚刚意识到它说的是整型,而不是文档中的基元类型,所以这个问题不适用于那个例子。但是指针还是原语吗?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Mike Seymour    15 年前

    C++没有“原始”类型的概念;整数是基本类型,指针是复合类型。

    在这种情况下, char* 无法转换为 size_t char ,所以它将被视为 InputIterator 模板参数。

        2
  •  0
  •   Alexey Malistov    15 年前
    char * str = "Some string";
    std::string s(str, str+6); // s = "Some s";
    
        3
  •  0
  •   AProgrammer    15 年前

    C++指针很好地实现了IpUpter程序的概念(毕竟,STL迭代器是C++指针的一个推广)。因此,这两个参数被视为指向一个char数组的指针,该数组指定初始化字符串所需的第一个和“一个过去的结束”元素。