在同一个类的另一个成员函数的定义中调用一个类成员函数
Posted
技术标签:
【中文标题】在同一个类的另一个成员函数的定义中调用一个类成员函数【英文标题】:Calling a class member function inside definition of the other member function of same class 【发布时间】:2012-11-06 18:21:26 【问题描述】:在同一个类的另一个成员函数的定义中调用一个类的成员函数的方法是什么?
例如: 文件: header.h
class A
public:
void fn1();
void fn2();
;
现在在 cpp 文件中: 函数.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++ 初学者。
【问题讨论】:
【参考方案1】:两个版本都是正确的,但行为不同。第一个版本将在调用 f1 的同一个实例上调用该函数,而第二个版本将始终在 obj_A 实例上调用 f2。
【讨论】:
我认为说两者在技术上都有效(即它们生成有效代码)会更准确,但方法 2 不正确,因为函数调用是在不同的对象上进行的。 @ValekHalfHeart 不不正确,这取决于 OP 没有明确制定的意图。 如果最初的调用是obj_A.fn1();
,他们会做同样的事情(这会让单元测试变得有趣)。
问题是“在另一个同一类的成员函数的定义中调用类的成员函数的方法是什么?” “同一类”部分对我说,第一个函数是从定义类行为的上下文中调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。【参考方案2】:
方法一是正确的。
方法 2 似乎在与您进行调用的实例不同的实例上调用该方法,这是一种不同的行为。在某些情况下,这就是您想要的,但您没有表明这是那种情况。
第一种方法有问题吗?
【讨论】:
以上是关于在同一个类的另一个成员函数的定义中调用一个类成员函数的主要内容,如果未能解决你的问题,请参考以下文章