小编f87*_*576的帖子

为什么静态成员函数在重载解析期间被视为具有隐式对象参数?

在此链接中: 隐式对象参数

在这句话中:

如果任何候选函数是不具有显式对象参数 (C++23 起) 的成员函数(静态或非静态),但不是构造函数,则将其视为具有额外参数(隐式对象参数) ) 表示调用它们的对象,并出现在第一个实际参数之前。

我不明白为什么这里提到静态这个词?隐式对象参数不是指针this(仅存在于非静态函数中)吗?

在此链接中编辑:链接

引用 :

关键字 this 是右值 (C++11 之前) 纯右值 (C++11 起) 表达式,其值是隐式对象参数(调用非静态成员函数的对象)的地址。它可以出现在以下环境中:

c++ member-functions language-lawyer overload-resolution

16
推荐指数
1
解决办法
1064
查看次数

java的identityhashcode()变量改了

为什么 System.identityHashCode() 对同一变量返回不同的 int ?

  public class java {
      public static void main(String[] args) { 
   1-         int v=60000;
   2-         System.out.println(System.identityHashCode(v));
   3-         System.out.println(System.identityHashCode(v));
    
      }
    }
output : 1831932724
         1747585824
Run Code Online (Sandbox Code Playgroud)

java

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

函数 std::max() C++?

max()我正在尝试使用Visual-studio 2022 版本 17.7.1 的功能

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    cout << max("5", "4") << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

4
Run Code Online (Sandbox Code Playgroud)

当我将代码更改为:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    cout << max("4","5") << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

5
Run Code Online (Sandbox Code Playgroud)

但是当我使用代码块时:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
    cout << max("5", "4") << "\n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

5 …
Run Code Online (Sandbox Code Playgroud)

c++ max codeblocks string-literals visual-studio

-1
推荐指数
1
解决办法
321
查看次数