public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Ángel González" <keisial@gmail.com>
To: Graziano Servizi <Graziano.Servizi@bo.infn.it>
Cc: gcc-help@gcc.gnu.org
Subject: Re: question
Date: Mon, 03 Feb 2014 17:53:00 -0000	[thread overview]
Message-ID: <52EFD783.3030207@gmail.com> (raw)
In-Reply-To: <52EFD3C2.6030209@bo.infn.it>

On 03/02/14 18:37, Graziano Servizi wrote:
> How could this (included) very short code work?
> It isn't a NOT SAFE conversion that made inside void fun?
>
> How can the A pointer know about the B's member f() ?
>
> I'm using gcc 4.8.2 on a Linux Fedora 19 system.
>
> Thanks for your help.
>
> G. Servizi

The a pointer knows nothing about B's member f().
The compiler sees that you are calling B::f(), and calls it (expecting a 
B object) with a A object. As B::f() doesn't use anything of B, you are 
“lucky” and it happens to run fine. If you were to call a B variable, it 
would be accessing random meemory.
Equally, if it had to access the vtable for accesing f(), it would fail, 
too. you can mark f() as “virtual” in order to force that and get at 
runtime the Segmentation fault you seem to be expecting.

That this invalid code happens to «work» on this compiler version 
doesn't make it more legal nor should it be taken as promoting its 
(mis)use, etc. etc.

  reply	other threads:[~2014-02-03 17:53 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-03 17:37 question Graziano Servizi
2014-02-03 17:53 ` Ángel González [this message]
2014-02-04  8:11 ` question Jonathan Wakely
  -- strict thread matches above, loose matches on Subject: below --
2022-11-29  9:03 Question Mo Alamili
2022-12-02  9:06 ` Question Mo Alamili
     [not found] <20200831201750.74266362@arch.localdomain>
     [not found] ` <20200903232726.ba28157e5ee86c0dbd76f723@wp.pl>
2020-09-04 22:49   ` Question, using gcc, forum tele
2020-09-04 23:44     ` Question tele
2014-10-07 13:57 Question Graziano Servizi
2014-10-12 12:54 ` Question David Hagood
2014-10-13  9:55   ` Question Jonathan Wakely
2014-07-21  8:51 question Graziano Servizi
2014-07-21  9:10 ` question Jonathan Wakely
2005-10-29 21:02 Question Matias Trocki
2005-10-30  5:00 ` Question Ian Lance Taylor
2004-12-02 15:11 Question Roberto Ausas
2004-12-02 15:25 ` Question Leopold Palomo-Avellaneda
2004-12-02 15:36 ` Question Eljay Love-Jensen
2004-08-19 16:21 question balan
2004-08-19 16:27 ` question Eljay Love-Jensen
2002-06-13 16:17 question Brett Hunt
2002-06-13 10:54 question Antonio Fontinha
1999-12-15 11:06 question petar
1999-12-31 22:24 ` question petar
1999-10-18 10:03 Question Rui Pedro Fernandes
1999-10-31 13:57 ` Question Rui Pedro Fernandes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52EFD783.3030207@gmail.com \
    --to=keisial@gmail.com \
    --cc=Graziano.Servizi@bo.infn.it \
    --cc=gcc-help@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).