返回信息流一个c++的问题没看懂,求解答,感谢!
class A
{
public:
virtual void Fun(int number = 10)
{
std::cout << "A::Fun with number " << number;
}
};
class B: public A
{
public:
virtual void Fun(int number = 20)
{
std::cout << "B::Fun with number " << number;
}
};
int main()
{
B b;
A &a = b;
a.Fun();
}
答案:输出B::Fun with number 10
问题:c++创建对象(对象是分静态和动态吗?)是什么时候(编译器还是运行期?)?
虚函数调用不是运行时确定吗?为什么确省参数是编译期呢?那构造函数的缺省参数设置呢?
下边是自己写的带成员变量和构造函数的程序:
#include <iostream>
using namespace std;
class A
{
public:
int num;
A(int n=10)
{
num=n;
}
virtual void Fun(int number=10)
{
std::cout << "A::Fun with number " << number<<endl<<num<<endl;
}
};
class B: public A
{
private:
int num;
public:
B(int n=20)
{
num=n;//B::num
}
virtual void Fun(int numb=20)
{
std::cout << "B::Fun with numb " << numb<<endl<<num<<endl<<A::num<<endl;
}
};
int main()
{
B b;
A &a = b;
a.Fun();
return 0;
}
输出:B::Fun with numb 10
20
10
这是一条镜像帖。来源:北邮人论坛 / cpp / #93379同步于 2016/9/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
c++多态??
dxy1
2016/9/16镜像同步23 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
简短的回答:java大法好
复杂的回答:未用c++,何谈解脱;既用c++,莫问因果。
如果非要回答这些问题,首先要知道c++里的“object”是什么意思才行。自己读c++ language specification吧,或者版里搜搜以前的帖子。
【 在 dxy1 的大作中提到: 】
: @nuanyangyang求解答!O(∩_∩)O谢谢!
【 在 nuanyangyang 的大作中提到: 】
: 简短的回答:java大法好
: 复杂的回答:未用c++,和谈解脱;既用c++,莫问因果。
: 如果非要回答这些问题,首先要知道c++里的“object”是什么意思才行。自己读c++ language specification吧,或者版里搜搜以前的帖子。
ok,谢暖神
【 在 bythw 的大作中提到: 】
: 虚函数的默认实参是编译时确定的,它会传递给派生类定义的相应虚函数,你是通过基类的指针调用需函数,默认实参是在基类虚函数生命中指定的值
那麻烦再问下,c++创建对象和分配内存是在编译期吗?构造函数的缺省参数是在什么时候指定?
虚函数调用是运行期的,但是使用基类指针调用会把基类的默认实参传递给派生类定义的版本中。
【 在 dxy1 的大作中提到: 】
: 但是虚函数调用不是在运行期吗?
对象分堆对象,局部/全局静态对象和栈对象,前1个是动态分配,后两个是编译期确定,构造函数的缺省参数在编译器就确定了
【 在 dxy1 的大作中提到: 】
: 那麻烦再问下,c++创建对象和分配内存是在编译期吗?构造函数的缺省参数是在什么时候指定?
【 在 bythw 的大作中提到: 】
: 对象分堆对象,局部/全局静态对象和栈对象,前1个是动态分配,后两个是编译期确定,构造函数的缺省参数在编译器就确定了
这些应该看那些资料啊?深入了解c++对象模型吗?