杭州网站建设V芯ee8888e,做网站制作外包,湖南网站制作,汕头网站推广找谁接口#xff08;抽象类#xff09;
接口描述了类的行为和功能#xff0c;而不需要完成类的特定实现。C 接口是使用抽象类来实现的#xff0c;抽象类与数据抽象互不混淆#xff0c;数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚…接口抽象类
接口描述了类的行为和功能而不需要完成类的特定实现。C 接口是使用抽象类来实现的抽象类与数据抽象互不混淆数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明为纯虚函数则这个类就是抽象类。纯虚函数是通过在声明中使用 “ 0” 来指定的。
设计抽象类通常称为 ABC的目的是为了给其他类提供一个可以继承的适当的基类。
抽象类不能被用于实例化对象它只能作为接口使用。如果试图实例化一个抽象类的对象会导致编译错误。
因此如果一个 ABC 的子类需要被实例化则必须实现每个虚函数这也意味着 C 支持使用 ABC 声明接口。如果没有在派生类中重写纯虚函数就尝试实例化该类的对象会导致编译错误。可用于实例化对象的类被称为具体类。
根据概念我们来写个实例来说明抽象类。
还是以狗类为说明例程与 2.2.4 小节类似只是 Aninmal 类的 run()方法定义为纯虚函数纯虚函数不用实现由派生类 Dog 和 Cat 类实现重写即可。
新建一个目录 11_abstract_class编辑一个 11_abstract_class.cpp 内容如下。
1 #include iostream 2 3 using namespace std; 4 5 /* 定义一个动物类 */ 6 class Animal 7 { 8 public: 9 virtual void run() 0; 10 }; 11 12 /* 定义一个狗类并继承动物类 */ 13 class Dog : public Animal 14 { 15 public: 16 void run() { 17 coutDog 的 run()方法endl; 18 } 19 20 }; 21 22 /* 定义一个猫类并继承动物类 */
23 class Cat : public Animal 24 { 25 public: 26 void run() { 27 coutCat 的 run()方法endl; 28 } 29 30 }; 31 32 int main() 33 { 34 /* 实例化 dog 对象 */ 35 Dog dog; 36 37 /* 实例化 cat 对象 */ 38 Cat cat; 39 40 /* dog 调用 run()方法 */ 41 dog.run(); 42 43 /* cat 调用 run()方法 */ 44 cat.run(); 45 46 return 0; 47 } 执行下面指令进行程序编译。
g 11_abstract_class.cpp -o 11_abstract_class 程序运行的结果如下。
虽然结果和例程与 2.2.4 小节一样但是却表现了两种不同的思想。学 C重要的是思想当我们对这种思想有一种的了解后不管是 Qt 或者其他 C程序我们都能快速学习和了解。
C的内容就到此结束了。在这个 C基础中我们的例子非常简单也十分之易懂重要的是理解概念许多 C的课程都是以 C的功能甚至是很复杂的算法作讲解内容复杂且多。
只要我们理解好上面的 C的基础对学习 C有很大的帮助不要求对 C有很深的理解至少在我们后面学习 Qt 时已经大概了解 Qt 中的 C语法。