You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C++成员函数中校验this指针是否为合理实践?

空指针调用成员函数的实践是否存在弊端?

场景说明

假设有如下C++类定义:

class Foo {
public:
    void fn();
private:
    int i;
};

以及查找函数:

Foo* findFoo() {
    // 查找失败时返回nullptr
}

常规实现方式

调用成员函数前需要先判断指针是否为空:

{
    Foo* foo = findFoo();
    if (foo) {
        foo->fn();
    }
}

我的简化方案

我觉得这类判空语句过于繁琐,希望为空指针情况提供默认行为来简化代码。于是想到在成员函数内部校验this指针:

void Foo::fn() {
    if (this == nullptr) { return; } // 空指针时默认直接返回
    i; // 访问类成员变量
}

这样就可以直接调用,无需在外层做判空:

{
    findFoo()->fn();
}

疑问

将this与nullptr比较并非this指针的常规用法,我想了解这种做法是否存在副作用或弊端。

补充说明:我所说的“繁琐”是指多层嵌套场景,比如Foo可能包含Foo_1,Foo_1可能包含Foo_2……Foo_n。如果要从Foo调用Foo_n的成员函数,需要逐层判空,非常繁琐。而在成员函数中校验this指针的话,就可以直接写成foo->get_foo_1()->get_foo_2()->...->get_foo_n()->call()。


内容的提问来源于stack exchange,提问作者hczstev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 07:37:35