[Issue 1645] New: can override base class' const method with non-const method
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Nov 7 11:21:49 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1645
Summary: can override base class' const method with non-const
method
Product: D
Version: 2.007
Platform: All
OS/Version: All
Status: NEW
Keywords: accepts-invalid
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: schveiguy at yahoo.com
This should not be allowed. Otherwise, you can call a const method on a base
class and the derived class can change the object.
I believe the fix that should be implemented should follow the same rules as
today's override rules. i.e., same function name/args, but derived method has
different const specicification results in a different signature, and therefore
a different overload.
Here is code that demonstrates the issue:
import std.stdio;
class A
{
int x;
const void f()
{
writefln("A");
}
}
class B : A
{
override void f()
{
x = 2;
writefln("B");
}
}
void main(){
A y = new B;
y.f;
}
[steves at localhost svn]$ dmd testme.d
gcc testme.o -o
testme -m32 -Xlinker -L/home/steves/dmd2/dmd/bin/../lib -lphobos2 -lpthread
-lm
[steves at localhost svn]$ ./testme
B
[steves at localhost svn]$
--
More information about the Digitalmars-d-bugs
mailing list