virtual 函数的public继承的 的一点问题及理解
来源:互联网 发布:淘宝上旺旺点不开 编辑:程序博客网 时间:2024/06/10 13:27
当使用派生类对象生成基类指针,使用基类指针调用 virtual 方法时,假设 virtual 方法的参数是有默认初始值的。
通过本实例发现,基类指针指向了派生类(derived class),按照常规来说应该是调用派生类的set(int x) 方法,但是在缺省参数时,情况确实很诡异,
首先基类指针调用派生类的方法是,如果缺省参数,则使用基类的默认初始化值,而不管派生类有没有默认初始化,然后再调用派生类的方法。
class A
{public:
void show(){cout<<i<<endl;}
private:
const int i=10;
};
class B
{
public:
virtual void set(int i=4){ j=i;cout<<"B:j "<<j<<endl;}
private:
int j;
};
class C: public B,private A //多重继承
{
public:
virtual void set(int x=7)
{
n=x;
cout<<"C:set-> "<<n<<endl;
}
void show1(){A::show();}
private:
int n;
};
int main()
{
C c;B* b=new C;
c.show1();
c.set(2);
b->set();
b->set(8);
delete b;
}
运行结果如下:
10
C:set-> 2
C:set-> 4
C:set-> 8
0 0
- virtual 函数的public继承的 的一点问题及理解
- C++虚继承:virtual public CParent的含义及作用
- C++虚继承:virtual public CParent的含义及作用
- C++继承的一点理解
- Effective C++读书笔记一 条款36 绝对不要重新定义public继承来的non-virtual函数
- virtual public CParent的含义及作用——虚基类
- 对C++继承的一点理解
- Java构造方法继承的一点理解
- 关于类的虚函数的public,private的继承问题。
- 虚析构函数的一点理解
- 对哈希表及哈希函数的一点理解
- 类的public protected private 继承方式理解
- 三种继承的方法:public 继承/private继承/protected继承详解及区别
- 三种继承的方法:public 继承/private继承/protected继承详解及区别
- 很有趣的问题,Public继承和默认的集成
- 关于多重继承构造函数调用的一点理解与实践
- Virtual的理解
- virtual的理解
- 泛型
- 安卓中Paint与Canvas用法
- enum与typedef enum的用法
- 协议森林06 瑞士军刀 (ICMP协议)
- 封装
- virtual 函数的public继承的 的一点问题及理解
- 金融工程——金融工程师的概念工具2
- 继承
- 关于用*号打印三角形问题
- Java EE基础知识2
- AIDL
- 自我理解的面向对象
- adfad
- 再观《一步之遥》观后感