Você está na página 1de 134

Introduolinguagemde

programaoC++

TulioMarcusR.Calixto
CentrodeInformticadeRibeiroPreto
Estruturadeumprograma

//myfirstprograminC++
#include<iostream>
usingnamespacestd;
intmain()
{
cout<<"HelloWorld!";
return0;
}
Estruturadeumprograma

//myfirstprograminC++
Comentriodelinha;
Todasaslinhascomeandocom2barras(//)
serocomentriosenoteronenhumefeitono
comportamentodoprograma;
Oprogramadorpodeusarparaincluirpequenas
observaesouexplicaesdentrodocdigo.
Estruturadeumprograma

#include<iostream>
Linhascomeandocom#sodirectivasparao
prprocessador;
Dizparaoprprocessadorincluiroarquivo
iostream;
BibliotecaemC++paraentradaesadabsica.
Suasfunesserousadasnodecorrerdo
programa.
Estruturadeumprograma

usingnamespacestd;

TodososelementosdebibliotecaspadroC++
sodeclaradasdentrodeumnamespacechamado
std;
Paraacessarsuasfuncionalidadesnsa
declaramoscomestaexpresso.
Estruturadeumprograma

intmain()

Iniciodafunoprincipal;
sempreaprimeirafunoaserexecutada;
Afunoprincipalopontodepartidapara
execuodetodososprogramasC++
Estruturadeumprograma

cout<<"HelloWorld!";

coutrepresentaofluxodesadapadroemC++;
coutdeclaradodentrodeiostreamdentrodo
namespacestd;
;indicaofimdeumainstruoC++
Estruturadeumprograma

return0;

Indicaqueafunoterminou;
Ocdigoderetorno0indicaqueoprograma
trabalhoucomoesperadosemerros;
Estruturadeumprograma

/*mysecondprograminC++
withmorecomments*/

#include<iostream>
usingnamespacestd;
intmain()
{
cout<<"HelloWorld!";//printsHelloWorld!
cout<<"I'maC++program";//printsI'maC++
program
return0;
}
Variveisetiposdedados

Variveis:Umapartedamemriaparaarmazenar
umdeterminadovalor;
Ocomputadorpodearmazenarmilhesde
variveiseexecutarclculossofisticadoscom
elas;
Cadavarivelprecisadeumidentificadorque
distingueumadeoutra;
Variveisetiposdedados

Identificadores:
Umidentificadorvlidoumasequnciadeuma
oumaisletras,nmerosouunderscore(_);
Nopodehaverespaos,smbolosoucaracteres
depontuao;
Precisamsemprecomearcomumaletra;
Nopodeserumapalavrachave
Variveisetiposdedados

Palavrachave:PalavrasreservadasdalinguagemC++
asm,auto,bool,break,case,catch,char,class,const,const_cast,
continue,default,delete,do,double,dynamic_cast,else,enum,
explicit,export,extern,false,float,for,friend,goto,if,inline,
int, long, mutable, namespace, new, operator, private,
protected, public, register, reinterpret_cast, return, short,
signed, sizeof, static, static_cast, struct, switch, template, this,
throw, true, try, typedef, typeid, typename, union, unsigned,
using,virtual,void,volatile,wchar_t,while
Variveisetiposdedados

C++casesensitive:fazdistinoentreletras
maisculaseminsculas;
ParausarumavarivelemC++nsprecisamos
primeiroespecificarotipodedadoqueavarivel
irpossuirseguidadeumidenticadordevarivel
vlido;
Ex.:inta
floatmynumber
Variveisetiposdedados

Sedesejamosdeclararvriasvariveisdeum
mesmotipo,podemosfazertudonumamesma
linha.
Ex.:inta,b,c
Variveisetiposdedados

//operatingwithvariables
#include<iostream>
usingnamespacestd;
intmain()
{
//declaringvariables:
inta,b;
intresult;
Variveisetiposdedados
Name Description Size* Range*
signed: -128 to 127
char Character or small integer. 1byte
unsigned: 0 to 255
short int signed: -32768 to 32767
Short Integer. 2bytes
( short) unsigned: 0 to 65535
signed: - 2147483648 to
2147483647
int I nteger. 4bytes
unsigned: 0 to
4294967295
signed: - 2147483648 to
long int 2147483647
Long integer. 4bytes
( long) unsigned: 0 to
4294967295
Boolean value. I t can take one of two
bool 1byte true or false
values: true or false.
float Floating point number. 4bytes +/- 3.4e +/- 38 (~7 digits)
+/- 1.7e +/- 308 (~15
double Double precision floating point number. 8bytes
digits)
long double Long double precision floating point 8bytes
+/- 1.7e +/- 308 (~15
number. digits)
2 or 4
wchar_t Wide character. 1 wide character
bytes
Variveisetiposdedados
//process:
a=5;
b=2;
a=a+1;
result=ab;
//printouttheresult:
cout<<result;
//terminatetheprogram:
return0;
}
Variveisetiposdedados

Escopodevariveis:Localondeavarivelpode
servista.
Varivelglobal:Sovariveisdeclaradasno
corpoprincipaldocdigoforadetodasas
funes
Varivellocal:declaradadentrodocorpode
umafunooubloco
Variveisetiposdedados
Variveisetiposdedados

Inicializaodevariveis:Quandodeclaramos
umavarivelseuvalordefaultindeterminado.
Sequisermosqueavarivelarmazenealgum
valorconcreto,nsdevemosinicializara
varivel.
Ex.:inta=0;
inta(0);
Variveisetiposdedados

//initializationofvariables
#include<iostream>
usingnamespacestd;
intmain()
{
inta=5;//initialvalue=5
intb(2);//initialvalue=2
intresult;//initialvalueundetermined
Variveisetiposdedados

a=a+3;
result=ab;
cout<<result;
return0;
}
Variveisetiposdedados

Strings:sequenciadecaracteres.
C++provesuporteparastringsatravsdaclasse
string.
Paradeclararumtipodedadostringnsdevemos
incluirumainformaoadicionalnoarquivode
cabealho:<string>
Variveisetiposdedados

//myfirststring
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
stringmystring;
mystring="Thisistheinitialstringcontent";
cout<<mystring<<endl;
Variveisetiposdedados

mystring="Thisisadifferentstringcontent";
cout<<mystring<<endl;
return0;
}
Constantes
Constantessoexpressescomumvalorfixo;
Ex.:#definePI3.141592625
#defineNEWLINE'\n'
Directivadoprprocessador

constintx=100;
constchartabulator='\t';
Directivadalinguagem
Constantes

//definedconstants:calculatecircumference
#include<iostream>
usingnamespacestd;
#definePI3.14159
#defineNEWLINE'\n'
intmain()
{
Constantes

doubler=5.0;//radius
doublecircle;
circle=2*PI*r;
cout<<circle;
cout<<NEWLINE;
return0;
}
Constantes
\n Newline
\r carriage return
\t Tab
\v vertical tab
\b Backspace
\f form feed (page feed)
\a alert
\a alert (beep)
(beep)

\' single quote ( ')


\" double quote ( ")
\? question mark ( ?)
\\ backslash ( \)
Operadores

Apartirdomomentoquepossuimosvariveis
nspodemosrealizaroperaescomelas.
Operadordeatribuio
a=5;
c=90;
Operadores

//assignmentoperator
#include<iostream>
usingnamespacestd;
intmain()
{
inta,b;//a:?,b:?
a=10;//a:10,b:?
b = 4; //a:10,b:4
a = b; //a:4,b:4
Operadores

b=7;//a:4,b:7
cout << "a:";
cout<<a;
cout << "b:";
cout<<b;
return0;
}
Operadores

Aritimticos

+ addition
- subtraction
* multiplication
/ division
% modulo
Operadores

Operadorescompostos:
+=,=,*=,/=,%=,>>=,<<=,&=,^=,|=

Realizamaoperaoseguidadeatribuio
Operadores
//compoundassignmentoperators
#include<iostream>
usingnamespacestd;
intmain()
{
inta,b=3;
a=b;
a+=2;//equivalenttoa=a+2
cout<<a;
return0;
}
Operadores

IncrementoeDecremento(++,)
c++;
c+=1;
c=c+1;
Operadores

Operadoresdeigualdade
==,!=,>,<,>=,<=
Ex:
(7==5)//evaluatestofalse.
(5>4)//evaluatestotrue.
(3!=2)//evaluatestotrue.
(6>=6)//evaluatestotrue.
(5<5)//evaluatestofalse.
Operadores

Operadoreslgicos
!,&&,||
Ex:
!(5==5)//evaluatestofalsebecausetheexpressionatitsright(5==5)istrue.
!(6<=4)//evaluatestotruebecause(6<=4)wouldbefalse.
!true//evaluatestofalse
!false//evaluatestotrue
Operadores

Operador&&

a b a&&b
true true true
true false false
false true false
false false false
Operadores

Operador||

a b a||b
true true true
true false true
false true true
false false false
Operadores

Operadorcondicional(?)
Retornaumvalorseaexpressoverdadeirae
outrovalorseaexpressoforfalsa.
Sintaxe:condition?result1:result2
Ex:
7==5?4:3//returns3,since7isnotequalto5.
7==5+2?4:3//returns4,since7isequalto5+2.
Operadores
//conditionaloperator
#include<iostream>
usingnamespacestd;
intmain()
{
inta,b,c;
a=2;
b=7;
c=(a>b)?a:b;
cout<<c;
return0;
}
EntradaeSadabsica

Permiteousuriointeragircomosistema.
C++usastreamspararealizarentradaesaida
bsicadeformasequencial,comonoteclado,por
exemplo.
streamumobjetoondeoprogramapodeinserir
ouextraircaracteres.
OarquivodecabealhoIOSTREAMcontemos
objetosdeentradaesaidapadro.
EntradaeSadabsica

Sadapadro>monitor
Objetostreamdefinidoparaacessarasada:cout
Ex:
cout<<"Firstsentence.\n";
cout<<"Secondsentence.\nThirdsentence.";
EntradaeSadabsica

Entradapadro:teclado
Objetostreamdefinido:cin
Precisaserseguidodeumavarivel
Ex:
intage;
cin>>age;
EntradaeSadabsica
//i/oexample
#include<iostream>
usingnamespacestd;
intmain(){
inti;
cout<<"Pleaseenteranintegervalue:";
cin>>i;
cout<<"Thevalueyouenteredis"<<i;
cout<<"anditsdoubleis"<<i*2<<".\n";
return0;}
EntradaeSadabsica

cinestrings
cinpraquandoencontraumespaoembranco
Spossientrarpalavraporpalavra
Soluo:getline
EntradaeSadabsica

//cinwithstrings
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
stringmystr;
cout<<"What'syourname?";
getline(cin,mystr);
EntradaeSadabsica

cout<<"Hello"<<mystr<<".\n";
cout<<"Whatisyourfavoriteteam?";
getline(cin,mystr);
cout<<"Ilike"<<mystr<<"too!\n";
return0;
}
EntradaeSadabsica

stringstream.
Oarquivodecabealho<sstream>defineuma
classechamadastringstream.
Permitetratarobjetosstringscomostreams.
Podeserutilizadoparaconverterstringseminte
double
EntradaeSadabsica

Ex:
//stringstreams
#include<iostream>
#include<string>
#include<sstream>
usingnamespacestd;
intmain()
{
EntradaeSadabsica
stringmystr;
floatprice=0;
intquantity=0;
cout<<"Enterprice:";
getline(cin,mystr);
stringstream(mystr)>>price;
cout<<"Enterquantity:";
getline(cin,mystr);
stringstream(mystr)>>quantity;
EntradaeSadabsica

cout<<"Totalprice:"<<price*quantity<<endl;
return0;
}
EstruturasdeControle

Umprogramanolimitadoaumasequencia
lineardeinstues.
Podehaverbifurcaes,repetiodecdigoe
tomadadedeciso.
Especificamcomooprogramadevereagirem
determinadascircunstncias.
EstruturasdeControle

Comaadiodeestruturasdecontrolesegueum
novoconceito:bloco.
Bloco:Conjuntodeinstruesagrupadadase
deliminadasporcolchetes{}
Seoblocofordeapenasumainstruopodese
otimiro{}
EstruturasdeControle

if/else
If(condio)blocodeinstrues
Seacondioverdadeiraoblocodeinstrues
executado.
Seacondiofalsaoblocoignoradoeo
programacontinuaapsoblococondicional.
EstruturasdeControle

Exs.
if(x==100)
cout<<"xis100";

if(x==100){
cout<<"xis";
cout<<x;
}
EstruturasdeControle

Nspodemosespecificaroquensqueremosque
aconteacasoacondionosejasatisfeita.Para
talutilizamosapalavrareservada:else
Ex:
if(x==100)
cout<<"xis100";
else
cout<<"xisnot100";
EstruturasdeControle

Concatenandoinstruesif+else
Ex:
if(x>0)
cout<<"xispositive";
elseif(x<0)
cout<<"xisnegative";
else
cout<<"xis0";
EstruturasdeControle

Loops:temopropsitoderepetiroblocode
instruesumcertonmerodevezesouenquanto
umacondionoforestabelecida.
Loopwhile
Sintaxe:while(condio)blocodeinstrues
EstruturasdeControle

//customcountdownusingwhile
#include<iostream>
usingnamespacestd;
intmain()
{
intn;
cout<<"Enterthestartingnumber>";
cin>>n;
EstruturasdeControle

while(n>0){
cout<<n<<",";
n;
}

cout<<"FIRE!\n";
return0;
}
EstruturasdeControle

Loop:do..while
Semelhanteaoloopwhile,excetoqueacondio
testadadepoisdaexecuodobloco.
Garantequeoblocosejaexecutadopelomenos
umavez.
EstruturasdeControle

Ex.:
//numberechoer
#include<iostream>
usingnamespacestd;
intmain()
{
unsignedlongn;
EstruturasdeControle

do{
cout<<"Enternumber(0toend):";
cin>>n;
cout<<"Youentered:"<<n<<"\n";
}while(n!=0);
return0;
}
EstruturasdeControle

Loop:for
Sintaxe:
for(inicializao;condio;incremento)bloco;
Realizaoumaaorepetitivacomumcontador
queinicializadoeincrementadoemcada
iterao.
EstruturasdeControle

Ex.:
//countdownusingaforloop
#include<iostream>
usingnamespacestd;
intmain(){
for(intn=10;n>0;n){
cout<<n<<",";
}
EstruturasdeControle

cout<<"FIRE!\n";
return0;
}
EstruturasdeControle

Saltosdeblocos
Break
Usandoobreakpodemosdeixaroloopfor,sea
condiodomesmonosatisfeita;
Podemosusarparaterminarumloopinfinito;
Forarofimantesdofimnatural
EstruturasdeControle

Ex.:
//breakloopexample

#include<iostream>
usingnamespacestd;
intmain()
{
intn;
EstruturasdeControle
for(n=10;n>0;n){
cout<<n<<",";
if(n==3)
{
cout<<"countdownaborted!";
break;
}
}
return0;
}
EstruturasdeControle

Continue
Fazoprogramaignorarorestantedoloopatuale
passaparaaproximaiterao.
Ex.:
EstruturasdeControle
//continueloopexample
#include<iostream>
usingnamespacestd;
intmain(){
for(intn=10;n>0;n){
if(n==5)continue;
cout<<n<<",";
}
cout<<"FIRE!\n";
return0;
}
EstruturasdeControle

Goto
Permitefazerumsaltoparaumoutropontodo
programa.
Odestinodosaltoprecisaterumidentificador
queutilizadocomoargumentoparaocomando
goto.
Oidentificadorvlidoseguidopordoispontos
(:).
EstruturasdeControle

Ex.:
//gotoloopexample
#include<iostream>
usingnamespacestd;
intmain()
{
intn=10;
loop:
EstruturasdeControle

cout<<n<<",";
n;
if(n>0)gotoloop;
cout<<"FIRE!\n";
return0;
}
EstruturasdeControle

Switch
Temafunodechecarmuitasopesparapoder
tomarumadeciso;
Podeserusadonolugardevriosifelse
Sintaxe:
EstruturasdeControle
switch(expression){
caseconstant1:
groupofstatements1;
break;
caseconstant2:
groupofstatements2;
break;
...
default:
defaultgroupofstatements
}
EstruturasdeControle

switch(x){ if(x==1){
case1: cout<<"xis1";
cout<<"xis1"; }
break; elseif(x==2){
case2: cout<<"xis2";
cout<<"xis2"; }
break; else{
default: cout<<"valueofx
cout<<"valueofx unknown";
unknown"; }
}
Funes

Utilizandofunespodemosestruturarnosso
programadeformamaismodular.
Funoumgrupodeinstruesqueso
executadasquandochamadasemalgumpontodo
programa.
Sintaxe:
tiponome(parametro1,parametro2,...)
{instrues}
Funes

Onde:
Tipo:Tipodedadoretornadopelafuno
Nome:Identificadorpeloqualserpossivelchamara
funo
Parametros:Cadaparametroconsisteemumtipode
dadoespecficoseguidoporumidentificador
Instrues:Formamocorpodafuno
Funes
Ex.:
//functionexample
#include<iostream>
usingnamespacestd;
intaddition(inta,intb){
intr;
r=a+b;
return(r);
}
Funes

intmain()
{
intz;
z=addition(5,3);
cout<<"Theresultis"<<z;
return0;
}
Funes
Ex.2:
//functionexample
#include<iostream>
usingnamespacestd;
intsubtraction(inta,intb){
intr;
r=ab;
return(r);
}
Funes
intmain(){
intx=5,y=3,z;
z=subtraction(7,2);
cout<<"Thefirstresultis"<<z<<'\n';
cout<<"Thesecondresultis"<<subtraction(7,2)<<'\n';
cout<<"Thethirdresultis"<<subtraction(x,y)<<'\n';
z=4+subtraction(x,y);
cout<<"Thefourthresultis"<<z<<'\n';
return0;
}
Funes

Funessemtipo:void
Funoqueexibeumamensagemnatela
Ex.:
Funes
//voidfunctionexample
#include<iostream>
usingnamespacestd;
voidprintmessage(){
cout<<"I'mafunction!";
}
intmain()
{
printmessage();
return0;
}
Funes

Argumentospodemserpassadorporvaloroupor
referncia
Atagoraosargumentosforampassadospor
valor
intx=5,y=3,z;
z=addition(x,y);
Funes

Passamososvaloresdexey(5,3)enoas
variveisxey
Osvaloresdasvariveisaebpassamaser5e3
Modificaesnosvaloresdeaebnomodificam
osvaloresdexey,poisapenascpiasdos
valoresforampassadosparaafuno.
Sequisermosqueosvaloresdexeysejam
modificadosprecisamospassarosdadospor
referncia
Funes

//passingparametersbyreference
#include<iostream>
usingnamespacestd;
voidduplicate(int&a,int&b,int&c){
a=a*2;
b=b*2;
c=c*2;
}
Funes

intmain()
{
intx=1,y=3,z=7;
duplicate(x,y,z);
cout<<"x="<<x<<",y="<<y<<",z="<<z;
return0;
}
Funes

Nadeclaraodafunoostiposdedadosde
cadaparametrososeguidosporumsinal&
&indicaqueosparamentrossopassadospor
referncia
Funes

Ex.2:
//morethanonereturningvalue
#include<iostream>
usingnamespacestd;
voidprevnext(intx,int&prev,int&next){
prev=x1;
next=x+1;
}
Funes

intmain()
{
intx=100,y,z;
prevnext(x,y,z);
cout<<"Previous="<<y<<",Next="<<z;
return0;
}
Funes

Valorespadresemparamentros
Quandodeclaramosumafunopodemosusar
valoresdefaultparaosparametros
Ovalordefaultserusadoseoargumento
correspondentefordeixadoembrancoquandoa
funochamada.
Seosvaloresforempassadosparaafuno,os
valoresdefaultseroignorados
Funes

//defaultvaluesinfunctions
#include<iostream>
usingnamespacestd;
intdivide(inta,intb=2){
intr;
r=a/b;
return(r);
}
Funes

intmain()
{
cout<<divide(12);
cout<<endl;
cout<<divide(20,4);
return0;
}
Funes

Sobrecargadefunes
EmC++duasfunespodemteromesmonome,
se:
Possuremtipoeounmerodeparametrosdiferentes
Funes
Ex.:
//overloadedfunction
#include<iostream>
usingnamespacestd;
intoperate(inta,intb){
return(a*b);
}
floatoperate(floata,floatb){
return(a/b);
}
Funes

intmain(){
intx=5,y=2;
floatn=5.0,m=2.0;
cout<<operate(x,y);
cout<<"\n";
cout<<operate(n,m);
cout<<"\n";
return0;
}
Funes

Recursividade
Propriedadequeasfunestmdechamaseasi
mesmo.
Clculodefatorial
Ordenao
Funes
Ex.:
//factorialcalculator
#include<iostream>
usingnamespacestd;
longfactorial(longa){
if(a>1)
return(a*factorial(a1));
else
return(1);
}
Funes
intmain()
{
longnumber;
cout<<"Pleasetypeanumber:";
cin>>number;
cout<<number<<"!="<<factorial(number);
return0;
}
Funes

Declarandofunes
Funesprecisamserdeclaradasantesdeserem
chamadas
Atagoraafunomaineraconstrudodepoisde
todasasoutrasfunes
Soluo:declararasfunes
Funes

Ex.:
//declaringfunctionsprototypes
#include<iostream>
usingnamespacestd;

voidodd(inta);
voideven(inta);
Funes
intmain(){
inti;
do{
cout<<"Typeanumber(0toexit):";
cin>>i;
odd(i);
}while(i!=0);
return0;
}
Arrays

Conjuntodeelementosdomesmotipodedado
Localizadosemregiesdememriacontgua
Podemserreferenciadosindividualmenteatravs
deumidentificador
Arrays

Declarandoarrays
intbilly[5];
Inicializandoarrays
intbilly[5]={16,2,77,40,12071};
Acessandoelemento
a=billy[2];
Arrays

Arrays

Ex.:
//arraysexample
#include<iostream>
usingnamespacestd;

intbilly[]={16,2,77,40,12071};
intn,result=0;
Arrays
intmain()
{
for(n=0;n<5;n++)
{
result+=billy[n];
}
cout<<result;
return0;
}
Arrays

Arraysmultidimensionais
Declarao
intjimmy[3][5];
Arrays

Acessandoelemento
inta=jimmy[1][3];
Arrays

Ex.:
#defineWIDTH5
#defineHEIGHT3

intjimmy[HEIGHT][WIDTH];
intn,m;
Arrays

intmain(){
for(n=0;n<HEIGHT;n++)
for(m=0;m<WIDTH;m++)
{
jimmy[n][m]=(n+1)*(m+1);
}
return0;
}
Arrays

Gerarnmerosaleatrios:
numero=rand()%valor_maximo;
Precisadoarquivodecabealho:
#include<stdlib.h>
Arrays

Exerccio:
Crieumamatrizquadrada10x10
Insiratodososelementosrandomicamente
Exibaoresultadodamultiplicaodoselementos
dadiagonalprincipalMENOSamultiplicao
doselementosdadiagonalsecundriadamatriz
Arrays

Dicas
DiagonalPrincipal:linha=coluna
DiagonalSecundria:(linha+coluna)=
(dimensao1)
Parapercorreramatrizuse:
for(linha)
for(coluna)
ClasseseObjetos

Classe
Definemosatributosdeumobjeto
Definemoqueumobjetopodefazer
Objetos
arealizaodaclasse
ClasseseObjetos

Ex.:
classCRectangle{
intx,y;
public:
voidset_values(int,int);
intarea(void);
};
ClasseseObjetos

Modificadoresdeacesso
Private:Acessivelsomentepormembrosda
classe.
Public:Acessiveldequalquerlugarondeoobjeto
visivel.
ClasseseObjetos
//classesexample
#include<iostream>
usingnamespacestd;

classCRectangle{
intx,y;
public:
voidset_values(int,int);
intarea(){return(x*y);}
};
ClasseseObjetos
voidCRectangle::set_values(inta,intb){
x=a;
y=b;
}

intmain(){
CRectanglerect;
rect.set_values(3,4);
cout<<"area:"<<rect.area();
return0;
}
ClasseseObjetos

Construtor
Metodoutilizadoparainicializarasvariaveisde
umobjeto
chamadoautomaticamentequandooobjeto
criado
Precisateromesmonomedaclasseenodeve
ternenhumdadoderetorno
ClasseseObjetos
Sobrecargadeconstrutores
//overloadingclassconstructors
#include<iostream>
usingnamespacestd;

classCRectangle{
intwidth,height;
public:
CRectangle();
CRectangle(int,int);
intarea(void){return(width*height);}
};
ClasseseObjetos
CRectangle::CRectangle(){
width=5;
height=5;
}

CRectangle::CRectangle(inta,intb){
width=a;
height=b;
}
ClasseseObjetos

intmain(){
CRectanglerect(3,4);
CRectanglerectb;
cout<<"rectarea:"<<rect.area()<<endl;
cout<<"rectbarea:"<<rectb.area()<<endl;
return0;
}
ClasseseObjetos

Herana
Permitecriarclassesquesoderivadasdeoutras
classes
Incluitodasascaracteristicasdaclassepai+suas
prprias
Paraindicarherenautilizamos(:)
classCRectangle:publicCPolygon
ClasseseObjetos

Ex.:
ClasseseObjetos
//derivedclasses
#include<iostream>
usingnamespacestd;
classCPolygon{
protected:
intwidth,height;
public:
voidset_values(inta,intb);
};
voidCPolygon::set_values(inta,intb){
width=a;height=b;
}
ClasseseObjetos
classCRectangle:publicCPolygon{
public:
intarea();
};

intCRectangle::area(){
return(width*height);
}

classCTriangle:publicCPolygon{
public:
intarea();
};
ClasseseObjetos
intCTriangle::area(){
return(width*height/2);
}

intmain(){
inta,b,c,d;
cout<<"Informeabasedoretangulo:";
cin>>a;
cout<<"Informeaalturadoretangulo:";
cin>>b;
ClasseseObjetos

cout<<"Informeabasedotriangulo:";
cin>>c;
cout<<"Informeaalturadotriangulo:";
cin>>d;

CRectanglerect;
CTriangletrgl;
ClasseseObjetos

rect.set_values(a,b);
trgl.set_values(c,d);
cout<<"Areadoretangulo:"<<rect.area()<<
endl;
cout<<"Areadotriangulo:"<<trgl.area()<<
endl;
return0;
}

Você também pode gostar