C ++中func()和(* this).func()之间的区别

侠盗猎车手

我正在使用C ++编写其他人的代码,但发现对某个函数的调用很奇怪func()这是一个例子:

if(condition)
    func();
else
    (*this).func();

func()之间有什么区别(*this).func()

在什么情况下,对func()的调用(*this).func()将执行不同的代码?

就我而言,func()不是宏。它是基类中的虚函数,在基类和派生类中都有一个实现,并且没有free func()if位于在基类的方法。

莉雅鲁斯

实际上是有区别的,但是在非常重要的情况下。考虑以下代码:

void func ( )
{
    std::cout << "Free function" << std::endl;
}

template <typename Derived>
struct test : Derived
{
    void f ( )
    {
        func(); // 1
        this->func(); // 2
    }
};

struct derived
{
    void func ( )
    {
        std::cout << "Method" << std::endl;
    }
};

test<derived> t;

现在,如果我们调用t.f(),第一行将test::f调用free函数func,而第二行将调用derived::func

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TkInter中的“ func”和“ func()”有什么区别?

来自分类Dev

TkInter中的“ func”和“ func()”有什么区别?

来自分类Dev

getter和func getSomething()之间有何区别?

来自分类Dev

&$ func($ arg)和$ func->($ arg)之间有什么区别吗?

来自分类Dev

(ptr + i)-> Func()和&ptr [i] .Func()之间有什么区别吗

来自分类Dev

`decltype(&ordenary_func)`和decltype`(ordenary_func)之间的区别

来自分类Dev

(ptr + i)-> Func()和&ptr [i] .Func()之间有什么区别吗

来自分类Dev

obj.func(arg)和obj.func.bind(obj,arg)之间的区别

来自分类Dev

公司是否使用C#中的Func和Action委托?

来自分类Dev

C ++中+ =和= +之间的区别

来自分类Dev

};之间的区别 和}在C ++中

来自分类Dev

C#LINQ和func

来自分类Dev

C#LINQ和func

来自分类Dev

C ++中void(*)()和void(&)()之间的区别

来自分类Dev

C ++中double和DOUBLE之间的区别

来自分类Dev

之间的区别!和〜在C#中

来自分类Dev

C中char []和char *之间的区别

来自分类Dev

Java和C中的数组之间的区别

来自分类Dev

C ++中的缩小和截断之间的区别?

来自分类Dev

Java和C中的数组之间的区别

来自分类Dev

C#中[,]和[] []之间的区别

来自分类常见问题

c99中的func()vs func(void)

来自分类Dev

为什么似乎func与C中的&func相同?

来自分类Dev

使用 Func 和 Expression Func 运行查询的区别

来自分类Dev

C#的Func和TimeSpan的区分联合

来自分类Dev

`my_func<T: MyTrait>` 与 `my_func<T> where T: MyTrait` 之间的区别

来自分类Dev

C ++和while之间的区别?

来自分类Dev

F#在func`lambda`和`lambda` |> func之间存在差异

来自分类Dev

代表与行动,C#中的Func

Related 相关文章

热门标签

归档