C语言中如何将一个虚函数改写成长尾?

2026-04-10 08:481阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计526个文字,预计阅读时间需要3分钟。

C语言中如何将一个虚函数改写成长尾?

%E2%80%9C%E5%BD%A2%E5%BC%8F%EF%BC%9Avirtual +%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B +%E5%87%BD%E6%95%B0%E5%90%8D +(%EF%BC%88%E5%9C%A8%E6%B4%BE%E7%94%9F%E7%B1%BB%E5%92%8C%E5%9F%BA%E7%B1%BB%E9%87%8C%E9%83%BD%E8%A6%81%E5%86%99%EF%BC%89) +%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%87%BD%E6%95%B0%E4%B8%8D%E8%83%BD%E6%98%AF%E8%99%9A%E5%87%BD%E6%95%B0 + 1.%E9%80%9A%E8%BF%87%E6%8C%87%E9%92%88%E5%AE%9E%E7%8E%B0%E5%A4%9A%E6%80%81 +%E5%AF%B9%E4%BA%8E%E5%9F%BA%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%EF%BC%9A%E8%B0%83%E7%94%A8%E5%9F%BA%E7%B1%BB%E7%9A%84%E8%99%9A%E5%87%BD%E6%95%B0 +%E5%AF%B9%E4%BA%8E%E6%B4%BE%E7%94%9F%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%EF%BC%9A%E8%B0%83%E7%94%A8%E6%B4%BE%E7%94%9F%E7%B1%BB%E7%9A%84%E2%80%9C%E5%8F%98%E5%BD%A2%E2%80%9D%E2%80%9D%EF%BC%9B

形式:virtual 函数类型 函数名 ()(在派生类和基类里都要写)

静态成员函数不能是虚函数

1.通过指针实现多态

对于基类的对象:调用基类的虚函数

对于派生类的对象:调用派生类的虚函数

#include <iostream> using namespace std; class A { public: virtual void Print() { cout << "print A" << endl; } }; class B: public A { public: virtual void Print() { cout << "print B" << endl; } }; class C: public A { public: virtual void Print() { cout << "print C" << endl; } }; int main() { A a1; A a2; B b; C c; A *pa1 = &a1; A *pa2 = &a2; C *pc = &c; pa1->Print(); pa1 = &b; pa1->Print(); pa2 = pc; pa2->Print(); return 0; }

2.通过基类的引用实现多态

#include <iostream> using namespace std; class A { public: virtual void Print() { cout << "print A" << endl; } }; class B: public A { public: virtual void Print() { cout << "print B" << endl; } }; void in(A &r)//基类的引用 { r.Print();//是谁的对象就调用谁的Print } int main() { A a; B b; in(a); in(b); return 0; }

C语言中如何将一个虚函数改写成长尾?

本文共计526个文字,预计阅读时间需要3分钟。

C语言中如何将一个虚函数改写成长尾?

%E2%80%9C%E5%BD%A2%E5%BC%8F%EF%BC%9Avirtual +%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B +%E5%87%BD%E6%95%B0%E5%90%8D +(%EF%BC%88%E5%9C%A8%E6%B4%BE%E7%94%9F%E7%B1%BB%E5%92%8C%E5%9F%BA%E7%B1%BB%E9%87%8C%E9%83%BD%E8%A6%81%E5%86%99%EF%BC%89) +%E9%9D%99%E6%80%81%E6%88%90%E5%91%98%E5%87%BD%E6%95%B0%E4%B8%8D%E8%83%BD%E6%98%AF%E8%99%9A%E5%87%BD%E6%95%B0 + 1.%E9%80%9A%E8%BF%87%E6%8C%87%E9%92%88%E5%AE%9E%E7%8E%B0%E5%A4%9A%E6%80%81 +%E5%AF%B9%E4%BA%8E%E5%9F%BA%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%EF%BC%9A%E8%B0%83%E7%94%A8%E5%9F%BA%E7%B1%BB%E7%9A%84%E8%99%9A%E5%87%BD%E6%95%B0 +%E5%AF%B9%E4%BA%8E%E6%B4%BE%E7%94%9F%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%EF%BC%9A%E8%B0%83%E7%94%A8%E6%B4%BE%E7%94%9F%E7%B1%BB%E7%9A%84%E2%80%9C%E5%8F%98%E5%BD%A2%E2%80%9D%E2%80%9D%EF%BC%9B

形式:virtual 函数类型 函数名 ()(在派生类和基类里都要写)

静态成员函数不能是虚函数

1.通过指针实现多态

对于基类的对象:调用基类的虚函数

对于派生类的对象:调用派生类的虚函数

#include <iostream> using namespace std; class A { public: virtual void Print() { cout << "print A" << endl; } }; class B: public A { public: virtual void Print() { cout << "print B" << endl; } }; class C: public A { public: virtual void Print() { cout << "print C" << endl; } }; int main() { A a1; A a2; B b; C c; A *pa1 = &a1; A *pa2 = &a2; C *pc = &c; pa1->Print(); pa1 = &b; pa1->Print(); pa2 = pc; pa2->Print(); return 0; }

2.通过基类的引用实现多态

#include <iostream> using namespace std; class A { public: virtual void Print() { cout << "print A" << endl; } }; class B: public A { public: virtual void Print() { cout << "print B" << endl; } }; void in(A &r)//基类的引用 { r.Print();//是谁的对象就调用谁的Print } int main() { A a; B b; in(a); in(b); return 0; }

C语言中如何将一个虚函数改写成长尾?