Newsgroup: it.comp.lang.c++
Titolo: From C to C++

Cosa cambia da programmare in C++ rispetto a C oltre alle classi,
l'ereditarietà ??????????? 
P.S: ma scanf() e printf() e tutta li libreria standard del C, si puo
usare in C++???????? 
P.P.S: si puo programmare il C++, come se fosse C?????
***************************************
messaggio inviato tramite HostSearch.it
---------------------------------------
---> 
http://www.hostsearch.it/newsgroup
***************************************

 l'ereditarietą ???????????
....il passaggio per riferimenro.

 .....il passaggio per riferimenro.
Io intendo a livello di linguaggio e parole chiave.
Novita che ho sentito:
1) funzioni operatori; 
2) overloading; 
3) templates; 
4) reference; 
5) namespace. 
delle quali so gia usare:
1) overloading delle funzioni; 
2) namespace; 
3) una base sulle Classi 


 3) una base sulle Classi
Allora lo sai cosa cambia!
E allora che lo domandi a fare?

 P.P.S: si puo programmare il C++, come se fosse C?????
Non sono sicuro di capire esattamente quel che vuoi dire,
comunque, in linea di massima, il C č "incuso" nel C++.
In linea di massima, quindi, la risposta č:
Si, anche se non č detto che abbia senso farlo.
Per approfondimenti, vedi ad es:
http://david.tribble.com/text/cdiffs.htm
--
Gerolamo

Apoc wrote:


Era per sapere se c'erano cose che nin zapevo.............
Mi spiegate che sono I Templates??????


> Mi spiegate che sono I Templates??????
Il meccanismo dei Template Definisce uno schema che deve essere istanziato
per poter essere utilizzato specificando gli opportuni argomenti per i
parametri.

<b>Apoc</b> wrote:


Tnk


Mi spiegate che sono I Templates??????
supponi di voler fare una funzione che restituisca il massimo fra due
numeri
int max(int a, int b){
    if (a >= b)
        return a;
    else
        return b;
}
E se adesso vuoi che la funzione possa essere usata anche per i long
come fai? Copia e incolla? E se vuoi che funzioni anche con altri
tipi? Devi fare tutte le volte copia e incolla? I template ti
permettono proprio di evitare questo:
#include <iostream>
#include <string>
template<class T>
T max(T arg1, T arg2){
    if (arg1 >= arg2)
        return arg1;
    else
        return arg2;
}
int main(){
    std::cout << max(5, 3) << std::endl;
    std::cout << max(5.6, 3.2) << std::endl;
    std::cout << max(std::string("a"), std::string("b")) << std::endl;
    return 0;
}
Come vedi max viene "adattata" automaticamente dal compilatore per
gestire i tipi che vuoi tu, basta che per loro si possa usare
l'operatore ">=". Nota che in questo semplice caso il compilatore
capisce da solo di che tipo sono gli argomenti, in casi ambigui devi
specificarlo tu.
-- 
Marco Barisione (ICQ 84277092)

 #include <string>




E tipo l'overloading delle funzioni o sbaglio?


> E tipo l'overloading delle funzioni o sbaglio?
No. Con l'overloading potresti al massimo ridefinire una funzione in modo
tale che prenda argomenti di tipi diversi, ma dovresti ridefinirla per tutti
i tipi di argomenti possibili. Con i template invece puoi definire una volta
per tutte una funzione (o una classe) che prenda come parametri degli
oggetti di tipo non definito: questo significa che con la stessa definizione
puoi usare la funzione anche con oggetti da te creati, purchè per essi siano
stati ridefiniti gli opportuni operatori necessari per l'esecuzione della
funzione template. Ad esempio, la funzione max che ti è stato spiegata, può
essere utilizzata anche passandole due istanze della classe Pippo, purchè
per essa sia stato ridefinito l'operator>=.
Ciao,
Cecco