Ainda não terminei de arrumar, isso dá um trabalho danado!
Abraços!
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
Replace these every slider sentences with your featured post descriptions.Go to Blogger edit html and find these sentences.Now replace these with your own descriptions.This theme is Bloggerized by Lasantha - Premiumbloggertemplates.com.
Aula 02
Exemplo
{
X x;
}
Alocação Dinâmica
Em C++ um objeto é criado dinâmicamente, com o operador new o qual retorna o endereço da região de memória do primeiro byte ocupado pelo objeto.
X* p=new X(); ou X *p=new X;
Objetos criados dinâmicamente residem no heap do sistema,que é a área destinada a um programa pelo SO(sistema operacional) para alocação dinâmica(em tempo de execução de memória). Ao contrário de objetos estáticos, os objetos criados dinâmicamente devem ser explicitamente destruidos, através do operador delete. Ao contrário de new, delete invoca o destrutor e em seguida libera a memória do heap ocupada pelo objeto.
delete p;
Obs. Manipulação explicita de ponteiros é uma das causas mais comuns de erros em C++(coisa que não existe em Java).
O tempo de vida útil de um objeto começa imediatamente após sua criação e dura até o instante imediatamente antes de sua instrução. Durante sua vida útil o objeto pode ser usado de duas maneiras:
1- Acessando um atributo do objeto:
int a=x.a; //acesso de leitura: x.a é um rvalue (valor que esta dp lado direito, não pode ser modificado)
p->a=a; //acesso de escrita: p->a é um lvalue (trabalha com o endereço)
//mesma coisa que a de cima (*p).a=a;
2- Enviando uma mensagem para o objeto:
x.m();
p->m();
Como resposta à mensagem o receptor acopla o método
X::m() //X(qualificador) e X::m(nome qualificado).
Acoplar significa: descobrir na classe do receptor um método cujo nome é o mesmo do seletor da mensagem e cujos parâmetros casam em número e tipo com os argumentos da mensagem, e em seguida invocar tal método. Sintaticamente enviar uma mensagem é similar a acessar um atributo, com a diferença que depois do nome do método vem o par de parênteses com os argumentos da mensagem em seu interior. É como se estivessemos chamando um função para um objeto. Semânticamente porém deve se ter em mente que se esta enviando uma mensagem e que a função a ser invocada é consequência do acoplamento.
Obs. X::m é um nome qualificado sendo o nome simples 'm' o nome de um método(o nome simples de um nome qualificado pode ser o nome de qualquer membro de uma classe). O qualificador de um nome qualificado é um nome de classe que precede o operador de escopo, nesse caso o 'X'. “m é da classe X”
Em C++, o operador de escopo ::a é um nome totalmente qualificado, sendo 'a' um nome declarado globalmente(o qualificador é nulo).
Exemplo
int a;
void f(int a)
{
::a=a;
}
Propriedades da Orientação e Objeto
-> Encapsulamento
-> Herança
-> Polimorfismo
Atributos de Métodos de Classes
Ao contrário de atributo de instância,um atributo de classe não pertence à estrutura de dados de objetos da classe. Há apenas uma cópia do atributo(que pode ser intendido como sendo de propriedade da classe) ao invés de uma cópia para cada objeto da classe. Os objetos da classe compartilham esta cópia única. Em C++ um atributo de classe é definido como modificador "static".
Obs Em C++ a variável uma variável estática declarada em uma classe(geralmente em uma arquivo .h) é definida em um arquivo .cpp.
//
//Início do x.h
//
#include
class X
{
public:
int a, b;
static int sa; //atributo de classe
void f()
{
a=sa;
}
};
//
//Fim do x.h
//
//
//Início do x.cpp
//
#include "x.h"
int X::sa=4;
int main()
{
X x1, x2;
int a=x1.a;
a=X::sa;
x1.sa=3;
printf("Tamanho de x: %d, valor de X::sa: \n", sizeof(x1), X2.sa);
return 0;
}
//
//Fim do x.cpp
//

