c++ - 派生类重载的运算符为什么不可以对基类对象使用?
黄舟
黄舟 2017-04-17 13:14:56
0
0
819

憋看了,年轻时不够机智

已经用派生类对象给一个空的基类对象赋值,而且此时已经对派生类重载了运算符<<,然而编译时还是会报错。
查看地址时,被赋值后的基类对象的地址和用来赋值的派生类对象的地址时一模一样的。而且<<可以用于后者,即用来赋值的派生类对象,所以运算符的重载的代码是没有错的。
代码如下,triangle, rectangle和cube类都是shape类的派生类
    shape * base;
    if (n==1)
             {
                    for (int i=0; i<9; i++) cin>>location[i];
                    triangle tmp(location[0],location[1],location[2],location[3],location[4],location[5],
                    location[6],location[7],location[8]);
                    cout<<"&tmp is"<<tmp<<endl;
                    base=&tmp;
                }
    if(n==2)
             {
                    for (int i=0; i<6;i++)  cin>>location[i];
                    cin>>width>>height;
                    rectangle tmp(location[0],location[1],location[2],location[3],location[4],location[5]
                    ,width,height);
                    //base=&tmp;
                }
    if(n==3)
             {
                     for (int i=0; i<3; i++) cin>>location[i];
                     cin>>width;
                     cube tmp(location[0],location[1],location[2],width);
                   
                }

    cout<<"*base is"<<*base<<endl;
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(0)
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!