由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请问c++为什么会编译失败?
相关主题
C 和 C++ 的区别最新某公司onsite面试题 (转载)
Overridden function will cause function shadow in C++, but not in Java菜鸟读C++ STL源程序的疑问
[合集] 一道C++面试题 (转载)[合集] 这段C++程序哪种写法是正确的
大家看看这个简单的qsort排序的问题G++用-g和-O3编译运行结果竟然不一样
C code参数传递出错可能的原因大家帮我看看这个C程序为什么出错了
谁来解释一下这个是compiler问题吗?微软VS修改bug的效率不行啊
数组问题A helloworld OpenMP question?
c++ 中如何把str转换为float?g++找不到bitset
相关话题的讨论汇总
话题: const话题: p1话题: void话题: virtual话题: class
进入Programming版参与讨论
1 (共1页)
j*******e
发帖数: 674
1
源程序:
#include
class A
{
public:
virtual void h()const{ printf("A::h() const\n");}
virtual void h(){ printf("A::h() non-const\n");}
};
class C: public A
{
public:
virtual void h(){ printf("C::h() non-const\n");}
};
int main()
{
C obj;
C* p1 = &obj;
const C* p2 = p1;
A* p3 = (A*)p1;
const A* p4 = p3;
p1->h();
//p2->h(); ///// this line will cause compile fail!!! but why?
p3->h();
p4->h();
return 0;
}
输出结果:
C::h() non-const
C::h() non-const
A::h() const
问题:
t****t
发帖数: 6806
2
add:
use A::h;
in class C

【在 j*******e 的大作中提到】
: 源程序:
: #include
: class A
: {
: public:
: virtual void h()const{ printf("A::h() const\n");}
: virtual void h(){ printf("A::h() non-const\n");}
: };
: class C: public A
: {

j*******e
发帖数: 674
3
Is "use" a keyword in C++?
Please explain in more detail.

【在 t****t 的大作中提到】
: add:
: use A::h;
: in class C

j*******e
发帖数: 674
4
you mean "using A::h"?
It works, but why is that necessary?

【在 t****t 的大作中提到】
: add:
: use A::h;
: in class C

t****t
发帖数: 6806
5
yeah, i meant "using"
sorry, was writing perl these days, mixed up

【在 j*******e 的大作中提到】
: you mean "using A::h"?
: It works, but why is that necessary?

F*****n
发帖数: 1552
6
This is called "Name Hiding".
virtual void h()const is hided by void h() in class C.

【在 j*******e 的大作中提到】
: 源程序:
: #include
: class A
: {
: public:
: virtual void h()const{ printf("A::h() const\n");}
: virtual void h(){ printf("A::h() non-const\n");}
: };
: class C: public A
: {

d*******d
发帖数: 2050
7
in class C, you have redefined h(), therefore, all the h() in the base class
, no matter what the signatures are, are hiddin by the new h(). Then, a cons
t object can only call a const function......

【在 j*******e 的大作中提到】
: 源程序:
: #include
: class A
: {
: public:
: virtual void h()const{ printf("A::h() const\n");}
: virtual void h(){ printf("A::h() non-const\n");}
: };
: class C: public A
: {

1 (共1页)
进入Programming版参与讨论
相关主题
g++找不到bitsetC code参数传递出错可能的原因
makefile 问题请教谁来解释一下这个是compiler问题吗?
GCC 居然允许变量长度的向量数组问题
谁给解释下这个比较弱的问题?c++ 中如何把str转换为float?
C 和 C++ 的区别最新某公司onsite面试题 (转载)
Overridden function will cause function shadow in C++, but not in Java菜鸟读C++ STL源程序的疑问
[合集] 一道C++面试题 (转载)[合集] 这段C++程序哪种写法是正确的
大家看看这个简单的qsort排序的问题G++用-g和-O3编译运行结果竟然不一样
相关话题的讨论汇总
话题: const话题: p1话题: void话题: virtual话题: class