C++ question

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

C++ question

Post by stelian_2681 » 23 Apr 2017, 10:47

Salut!
Am cateva intrebari la care caut lamuriri.

a.
O functie inline semnalează compilatorului că orice apel al functiei ar trebui sa fie înlocuit cu o implementare a functiei in linia in care se face apelul.
O functie recursiva este o functie care se autoapeleaza.
O functie inline poate fi recursiva ?

b.
Am urmatorul cod:

Code: Select all

#include <iostream>
using namespace std;

int main()
{
    cout << 25u - 50;
    return 0;
}
La compilare afiseaza 4294967271. De ce ?

c.
Codul urmator l-am luat de pe net.
Nu inteleg ce vrea sa afiseze.

Code: Select all

#include <iostream>
using namespace std;

class A
{
public:
    A()
    {}
    ~A()
    {
        throw 42;
    }
};

int main(int argc, const char *argv[])
{
    try
    {
        A a;
        throw 32;
    }
    catch(int a)
    {
        cout << a;
    }
    return 0;
}



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi

Re: C++ question

Post by Ovidiu Cucu » 28 Apr 2017, 10:56

a. Specificatorul inline doar sugereaza compilatorului ca ar fi de preferat sa insereze codul de implementare a unei functii in locul de apel, in loc sa foloseasca mecanismul de apel obisnuit. Este la latitudinea compilatorului daca va face intradevar asa sau va ignora specificatorul inline. Nu se specifica nicaieri in standardul de C++ care functii pot si care nu pot fi inline. Desi banui ca profu' se asteapta la raspunsul "nu", cred ca un raspuns corect ar fi "depinde de compilator".
Vezi si discutia asta de la Stackoverflow: http://stackoverflow.com/questions/1902 ... -be-inline.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3776
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi

Re: C++ question

Post by Ovidiu Cucu » 28 Apr 2017, 11:06

b. Sufixul u de la 25u inseamna unsigned, mai pe romaneste "intreg fara semn". Cand se evalueaza expresia, rezultatul este de tip unsigned (conversia implicita se face de la signed catre unsigned), deci e normal sa-ti afiseze ce se afiseaza si nu "minus si ceva".
c. Ruleaza si-ai sa vezi! :)

stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

Re: C++ question

Post by stelian_2681 » 29 Apr 2017, 18:58

Multumesc pentru raspunsuri!

Post Reply