水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:[讨论][求助]为什么这段代码可以执行并且正常输出hello
楼主
|
horkoson
|
2024-03-02 23:35:37
|
展开
class Test
{
public:
void hello() {
printf("hello\n");
}
};
int main()
{
Test *p = nullptr;
p->hello();
return 0;
}
--
FROM 175.153.160.*
2楼
|
horkoson
|
2024-03-03 21:59:51
|
展开
【 在 dormouseBHU 的大作中提到: 】
: p->hello(); 实际会被翻译成 hello(p) p 又没有被用到,所以能正常执行。
:
:
--
FROM 175.153.160.*
5楼
|
horkoson
|
2024-03-04 22:05:47
|
展开
【 在 z16166 的大作中提到: 】
: non-virtual的成员函数的地址是编译期就知道的,不需要通过this去访问其地址就能直接call,所以this是nullptr也没关系。
: virtual的成员函数,以及non-static的成员变量才需要通过this指针去访问,这些情况下this不能是nullptr。
: 但是,通过nullptr的this来调用成员函数属于Undefined Behavior
俞飞鸿C++大佬
--
FROM 175.153.160.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版