21xrx.com
2024-11-22 05:26:14 Friday
登录
文章检索 我的文章 写文章
成员变量和函数指针
2023-07-09 04:33:14 深夜i     --     --
成员变量 函数指针 面向对象编程 虚函数

成员变量和函数指针是 C++ 中两个重要的概念,它们可以用于实现许多高级的编程技术。

成员变量是一个类的特有属性,它们包含在类的定义中,并且可以被类的所有成员函数访问。在使用成员变量时需要使用“.”运算符来访问,例如:


class MyClass

public:

  int myVariable;

;

MyClass object;

object.myVariable = 42;

函数指针是指可以被用作函数参数或返回值的指针。它们可以让我们在运行时选择要执行的特定函数。在 C++ 中,函数指针的语法有点复杂,但实际上很容易理解。以下是一个示例:


void myFunction(int x)

  cout << "The value of x is " << x << endl;

void (*myFunctionPointer)(int) = &myFunction;

(*myFunctionPointer)(123); // outputs "The value of x is 123"

上述代码定义了一个指向名为 myFunction 的函数的函数指针 myFunctionPointer,并将其初始化为指向 myFunction。然后,通过使用“*”和括号运算符使用该函数指针来调用该函数。

使用这两个概念,我们可以实现一些高级编程技巧,例如回调函数和策略模式。回调函数是指将一个函数作为参数传递给另一个函数,以便在特定条件下执行该函数。例如:


void callWithX(int x, void (*func)(int)) {

  func(x);

}

void someFunction(int x)

  cout << "The value of x is " << x << endl;

callWithX(123, &someFunction); // outputs "The value of x is 123"

上述代码定义了一个名为 callWithX 的函数,该函数接受一个整数和函数指针作为参数,并在调用该函数时将整数传递给函数指针。然后,在 main 函数中,提供了一个名为 someFunction 的函数以及要传递给 callWithX 的参数 123。最后,我们将 someFunction 作为回调函数传递给 callWithX,以便在特定条件下执行该函数。

另一个重要的应用是策略模式。这通过将不同的算法实现组织在一起,以便在不同的情况下应用不同的算法。以下是一个简单的例子:


class Strategy {

public:

  virtual void execute(int x) = 0;

};

class AddTwo : public Strategy {

public:

  void execute(int x) {

    cout << "The result is " << (x + 2) << endl;

  }

};

class MultiplyByTwo : public Strategy {

public:

  void execute(int x) {

    cout << "The result is " << (x * 2) << endl;

  }

};

class MyClass {

private:

  Strategy* m_strategy;

public:

  void setStrategy(Strategy* strategy)

    m_strategy = strategy;

  

  

  void executeStrategy(int x) {

    m_strategy->execute(x);

  }

};

MyClass object;

AddTwo addStrategy;

object.setStrategy(&addStrategy);

object.executeStrategy(3); // outputs "The result is 5"

MultiplyByTwo multiplyStrategy;

object.setStrategy(&multiplyStrategy);

object.executeStrategy(3); // outputs "The result is 6"

上述代码定义了一个名为 Strategy 的抽象类,其中包含一个纯虚函数 execute,然后定义了两个从 Strategy 派生的类,即 AddTwo 和 MultiplyByTwo,它们各自实现了 execute 函数。然后定义了一个名为 MyClass 的类,该类具有一个名为 m_strategy 的 Strategy 指针变量。MyClass 还定义了两个用于设置和执行策略的公共函数。 Main 函数中,我们首先将 addStrategy 设置为 MyClass 的策略,并使用 3 进行执行策略,然后将 multiplyStrategy 设置为 MyClass 的策略,并使用 3 进行执行策略。

通过使用成员变量和函数指针,我们可以实现许多高级编程技巧,例如回调函数和策略模式。这使得 C++ 成为一种非常强大的编程语言,能够实现许多复杂的应用程序和算法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复