zoukankan      html  css  js  c++  java
  • 令人迷惑的隐藏规则

    令人迷惑的隐藏规则

    本来仅仅区别重载与覆盖并不算困难,但是 C++的隐藏规则使问题复杂性陡然增加。 这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

    (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。

    (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

     1 #include <iostream>
     2 
     3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
     4 using namespace std;
     5 int main(int argc, char** argv) {
     6      //定义结构类型
     7     struct human {
     8        char name[10];
     9        int sex;
    10        int age;
    11     };
    12 
    13     //声明结构变量和结构指针变量,并初始化
    14     struct human x={"WangPing",1,30},*p=NULL;
    15 
    16     //结构指针变量指向对象
    17     p=&x;
    18 
    19     //显示结构变量的值
    20     cout<<"x.name="<<x.name<<endl;
    21     cout<<"x.sex="<<x.sex<<endl;
    22     cout<<"x.age="<<x.age<<endl;
    23   
    24     //利用结构指针显示结构对象中的数据
    25     cout<<"(*p).name="<<(*p).name<<endl;
    26     cout<<"(*p).sex="<<(*p).sex<<endl;
    27     cout<<"(*p).age="<<(*p).age<<endl;
    28     cout<<"p->name="<<p->name<<endl;
    29     cout<<"p->sex="<<p->sex<<endl;
    30     cout<<"p->age="<<p->age<<endl;
    31 
    32     //通过结构指针为结构对象输入数据
    33     cout<<"name:";
    34     cin>>(*p).name;
    35     cout<<"sex:";
    36     cin>>(*p).sex;
    37     cout<<"age:";
    38     cin>>(*p).age;
    39 
    40     //显示结构变量的值
    41     cout<<"x.name="<<x.name<<endl;
    42     cout<<"x.sex="<<x.sex<<endl;
    43     cout<<"x.age="<<x.age<<endl;
    44     return 0;
    45 }
  • 相关阅读:
    日常脚本练习与解释
    第五周作业
    centos 7中命令记录
    centos7 中如何查看、打开、关闭防火墙。
    第四周
    复制/etc/profile至/tmp/目录,用查找替换命令删除/tmp/profile文件中的 行首的空白字符
    vim中设置tab缩进为4个字符
    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    sql 索引笔记--索引组织结构
    sql 索引笔记2
  • 原文地址:https://www.cnblogs.com/borter/p/9406513.html
Copyright © 2011-2022 走看看