美文网首页C++
C++语法系列之12--默认参数总结

C++语法系列之12--默认参数总结

作者: hello12qwerz | 来源:发表于2018-04-15 17:41 被阅读0次
    这周忙成狗,大补几篇总结。
    继续战斗!
    

    C++中子类与超类的方法可以有不同的默认参数,但是使用的默认参数取决于声明的变量类型,而不是底层实际的对象类型。

    class Super {
    public:
        virtual void go(int i = 1) {
            cout << "super go i = " << i << endl;
        };
    };
    
    class Sub : public Super {
    public:
        void go(int i = 8) {
            cout << "sub go i = " << i << endl;
        }
    };
    
    int main(int argc, const char * argv[]) {
        Super mySuper;
        Sub mySub;
        Super& mySuperRefToSub = mySub;
        mySuper.go();
        mySub.go();
        mySuperRefToSub.go();
        return 0;
    }
    

    运行结果如下:

    super go i = 1
    sub go i = 8
    sub go i = 1
    

    从上面的运行结果可以看到:C++根据描述对象的表达式类型绑定默认参数,而不是根据实际的对象类型绑定参数。所以默认参数不会继承。

    相关文章

      网友评论

        本文标题:C++语法系列之12--默认参数总结

        本文链接:https://www.haomeiwen.com/subject/wvtjkftx.html