“Se ambos os objetos são do mesmo tipo (ou seja, ambos são objeto da mesma classe), então um objeto pode ser atribuído a outro. Não é suficiente para as duas classes ser fisicamente similares – seus nomes de tipo devem ser os mesmos. Por default, quando um objeto é atribuído a outro,uma cópia de modo de bit dos dados do primeiro objeto é atribuído ao segundo. Assim, após a atribuição, os dois objetos serão idênticos, mas separados” – ( C++ guia para iniciantes,Schild)
// atribuindo objetos
#include <iostream>
using namespace std;
class test
{
int a,b;
public:
void setab(int i,int j){a=i,b=j;}
void showab()
{
cout << "a e " << a << "\n";
cout << "b e " << b << "\n";
}
};
class test2
{
int a,b;
public:
void setab2(int i,int j){a=i*2,b=j*2;}
void showab2()
{
cout << "a e " << a << "\n";
cout << "b e " << b << "\n";
}
};
int main()
{
test ob1, ob2;
ob1.setab(10,20);
ob2.setab(0,0);
cout << "ob1 antes da designacao: \n\n";
ob1.showab();
cout << "\nob2 antes da designacao:\n";
ob2.showab();
cout << "\n";
ob2 = ob1; // atribui ob1 a ob2
cout << "\nob1 depois da designacao:\n";
ob1.showab();
cout << "\nob2 depois da designacao:\n";
ob2.showab();
cout << "\n";
ob1.setab(-1,-1); // modifique ob1
cout << "\nob1 depois da mudanca de ob1:\n";
ob1.showab();
cout << "\nob2 depois da mudanca de ob1:\n";
ob2.showab();
test2 ob3;
ob3.setab2(30,40);
cout << "\nob3 antes da mudanca:\n";
ob3.showab2();
cout << "\nob1 depois da mudanca de ob3:\n";
ob1=ob3;
ob1.showab();
system ("pause");
return 0;
}
1- Lendo o texto acima, pode-se deduzir, que se os objetos de classes diferentes podem ser atribuídos. Entretanto, o programa apresenta erro caindo na linha
ob1=ob3;
erros:
D:\Sobre_C++\Livro C++guia para iniciantes\atribuicao_de_objetos.cpp In function `int main()':
69 D:\Sobre_C++\Livro C++guia para iniciantes\atribuicao_de_objetos.cpp no match for 'operator=' in 'ob1 = ob3'
note D:\Sobre_C++\Livro C++guia para iniciantes\atribuicao_de_objetos.cpp:7 candidates are: test& test::operator=(const test&)
Pergunto: as funções e atributos das duas classes não praticamente idênticos ? só muna o nome das funções e o parâmetros são multiplicados na classe test2. O tipo de objetos não permanece o mesmo ?
2- Se eu só puder atribuir objetos dentro de uma mesma classe, qual seria a vantagem desse recurso ?
Pergunta
Castro
:rolleyes:
Considere a citação e o programa abaixo:
1- Lendo o texto acima, pode-se deduzir, que se os objetos de classes diferentes podem ser atribuídos. Entretanto, o programa apresenta erro caindo na linhaerros:
Pergunto: as funções e atributos das duas classes não praticamente idênticos ? só muna o nome das funções e o parâmetros são multiplicados na classe test2. O tipo de objetos não permanece o mesmo ?
2- Se eu só puder atribuir objetos dentro de uma mesma classe, qual seria a vantagem desse recurso ?
Obvrigado
Link para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.