C++ 在同一类的其他成员函数的定义内调用类成员函数
在同一个类的另一个成员函数的定义中调用一个类的memberfunction的方法是什么 例如: 文件: 标题.hC++ 在同一类的其他成员函数的定义内调用类成员函数,c++,C++,在同一个类的另一个成员函数的定义中调用一个类的memberfunction的方法是什么 例如: 文件: 标题.h class A { public: void fn1(); void fn2(); }; 现在在cpp文件中: function.cpp 方法1: #include"header.h" void A::fn1() { //function body for fn1() //What is the way to make a call for fn2()? //assume I h
class A
{
public:
void fn1();
void fn2();
};
现在在cpp文件中:
function.cpp
方法1:
#include"header.h"
void A::fn1()
{
//function body for fn1()
//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()
fn2();
}
方法2:
#include"header.h"
A obj_A;
void A::fn1()
{
//function body for fn1()
//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()
obj_A.fn2();
}
请澄清哪种方法是正确的
谢谢,
C++中的初学者。< P>方法1是正确的。< /P>
方法2似乎在不同的实例上调用该方法,而不是从中进行调用,这是一种不同的行为。有些情况下,这就是你想要的,但你没有表明这就是你想要的
第一种方法有问题吗?方法1是正确的
方法2似乎在不同的实例上调用该方法,而不是从中进行调用,这是一种不同的行为。有些情况下,这就是你想要的,但你没有表明这就是你想要的
第一种方法有问题吗?两种版本都是正确的,但行为不同。第一个版本将在调用f1的同一实例上调用函数,而第二个版本将始终在obj_实例上调用f2。两个版本都是正确的,但行为不同。第一个版本将在调用f1的同一个实例上调用该函数,而第二个版本将始终在obj_实例上调用f2。我认为更准确的说法是,这两个函数在技术上都可以工作(即,它们生成有效代码),但是方法2是不正确的,因为函数调用是在不同的对象上进行的。@ValekHalfHeart它不是不正确的,它取决于OP没有明确制定的意图。如果原始调用是
obj_a.fn1()代码>它们将做完全相同的事情(这可能会使单元测试变得有趣)。问题是“在同一类的另一个成员函数的定义内调用一个类的memberfunction的方法是什么?”问题是“同一类的”第二部分告诉我,第一个函数是从定义类行为的上下文调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。我认为更准确的说法是,这两种方法在技术上都是有效的(也就是说,它们生成有效的代码),但方法2是不正确的,因为函数调用是在不同的对象上进行的。@ValekHalfHeart它不是不正确的,这取决于OP没有明确确定的意图。如果原始调用是obj_A.fn1()代码>它们将做完全相同的事情(这可能会使单元测试变得有趣)。问题是“在同一类的另一个成员函数的定义内调用一个类的memberfunction的方法是什么?”问题是“同一类的”第二部分告诉我,第一个函数是从定义类行为的上下文调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。