我是C++编程的新手,但我有Java经验.我需要有关如何将对象传递给C++中的函数的指导.
我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对象引用的变量.
如果您还可以解释在哪里使用这些选项,那将会很棒.
据我所知,std::string_view是一个非所属参照字符串之间的主要差异std::string_view,并std::string有
现在,为什么std :: string_view不适用于其他类型?或者为什么这个实现仅适用于std::string?
例如:如果我们有类似的<T>generic_view地方T可以是任何类型,包括自定义类型.
有了这个,可以使用而不是使用const T& as函数参数<T>generic_view.而且其他优点std::string_view也很有用,如分配,复制等.
C ++ 17的字符串视图为开发人员提供了一种方法,可以将便宜的非所有者引用传递给实际上比更快const std::string&的字符串。我可能很天真,但这听起来很像Java内置的复制对象引用的机制。像Integer和String这样的内置包装器是不可变的。Java的“引用”机制使您可以保证这些对象在程序的整个生命周期中都具有相同的值。区别在于C ++,string_view在这样的程序中很明显:
void retrieve_an_object (string_view sv) {
}
Run Code Online (Sandbox Code Playgroud)
这比Java令人惊讶的(对C ++开发人员而言)机制更具自我证明性。但是对于标准和库编写者来说,为C ++中每个可能的类编写一个视图类无疑是一个巨大的负担。C ++也许可以有一种更专用的方式将对象标记为“仅查看”,而不必编写整个类;如果这样,为什么将其从考虑中删除?