虚拟函数的定义与声明
来源:互联网 发布:绿岛网络舆情监测系统 编辑:程序博客网 时间:2024/06/05 14:37
1。同名+同参数表+同返回值类型
2。参数表不能兼容derived
3。返回值类型可以兼容derived
4。默认参数,const修饰可以使用,但需一致书写,否则语法对语义上不鲁棒
const对虚拟函数:
(1)比如const用在Base,而Derived无const修饰时,这使Base的const对象才能使用此成员函数,而Derived的任何对象均可使用此virtual成员函数
(2)const使得使用静态类型,取消滞后联编
class B
{
public:
virtual void ok() const{cout << "B::okokok" << endl;}
};
class D:public B
{
public:
void ok() {cout << "D::okokok" << endl;}
};
int main()
{
// const B b;
// b.ok();
B *pb = new D;
pb -> ok(); //B::okokok
D *pd = new D;
pd -> ok(); //D::okokok
delete pb;
return 0;
}
默认参数对虚拟函数
(1)未破坏滞后联编
(2)默认参数是在编译的时候带入的
class B
{
public:
virtual void ok(int = 3) {cout << "B::okokok" << endl;}
};
class D:public B
{
public:
void ok(int i) {cout << "D::okokok" << endl; cout << i << endl;}
};
int main()
{
// const B b;
// b.ok();
B *pb = new D;
pb -> ok(); //D::okokok
D *pd = new D;
pd -> ok(3); //D::okokok
delete pb;
return 0;
}
2。参数表不能兼容derived
3。返回值类型可以兼容derived
4。默认参数,const修饰可以使用,但需一致书写,否则语法对语义上不鲁棒
const对虚拟函数:
(1)比如const用在Base,而Derived无const修饰时,这使Base的const对象才能使用此成员函数,而Derived的任何对象均可使用此virtual成员函数
(2)const使得使用静态类型,取消滞后联编
class B
{
public:
virtual void ok() const{cout << "B::okokok" << endl;}
};
class D:public B
{
public:
void ok() {cout << "D::okokok" << endl;}
};
int main()
{
// const B b;
// b.ok();
B *pb = new D;
pb -> ok(); //B::okokok
D *pd = new D;
pd -> ok(); //D::okokok
delete pb;
return 0;
}
默认参数对虚拟函数
(1)未破坏滞后联编
(2)默认参数是在编译的时候带入的
class B
{
public:
virtual void ok(int = 3) {cout << "B::okokok" << endl;}
};
class D:public B
{
public:
void ok(int i) {cout << "D::okokok" << endl; cout << i << endl;}
};
int main()
{
// const B b;
// b.ok();
B *pb = new D;
pb -> ok(); //D::okokok
D *pd = new D;
pd -> ok(3); //D::okokok
delete pb;
return 0;
}
- 虚拟函数的定义与声明
- 函数声明与函数定义的参数
- 变量与函数的声明与定义
- 函数定义与声明
- 函数的定义与声明的区别
- 注意函数/变量的声明与定义
- inline函数的声明与定义
- 模板类中友元函数的声明与定义
- 友元函数的声明与定义
- 函数定义与声明的区别
- C++函数声明与定义
- C++函数声明与定义
- 变量、函数声明与定义
- 函数的声明、定义与函数的编译、链接
- C旧式与新式函数的声明与定义
- 一道关于函数声明与对象定义的笔试题
- C语言中变量和函数的声明与定义
- C语言中变量和函数的声明与定义
- 刷新
- 大规模定制生产模式及其关键技术
- 判断String为空
- Think in java 答案_Chapter 5_Exercise 1
- 一个自写的共享内存简单的例子,学习原理之用
- 虚拟函数的定义与声明
- Think in java 答案_Chapter 5_Exercise 2
- 关于学生按分数排列名次的问题
- iBatis与Spring集成时的批处理释疑
- Think in java 答案_Chapter 5_Exercise 3
- 网页播放器的参数含义 Windows Media Player 网页播放器 参数含义
- Think in java 答案_Chapter 5_Exercise 4
- Think in java 答案_Chapter 5_Exercise 5
- URL编码