Funções Membro
Introdução às Funções Membro
Funções membro são métodos definidos dentro de uma classe que operam sobre os membros de dados da classe. Elas encapsulam o comportamento dos objetos e fornecem uma maneira de interagir com os dados da classe.
Tipos de Funções Membro
graph TD
A[Funções Membro] --> B[Métodos Regulares]
A --> C[Construtores]
A --> D[Destrutores]
A --> E[Métodos Inline]
A --> F[Métodos Const]
Métodos Regulares
Métodos regulares realizam operações e manipulam dados da classe:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
};
Construtores
Construtores inicializam o estado do objeto quando um objeto é criado:
class Student {
private:
string name;
int age;
public:
// Construtor padrão
Student() {
name = "Desconhecido";
age = 0;
}
// Construtor parametrizado
Student(string n, int a) {
name = n;
age = a;
}
};
Destrutores
Destrutores limpam recursos quando um objeto é destruído:
class DatabaseConnection {
public:
~DatabaseConnection() {
// Fechar conexão com o banco de dados
closeConnection();
}
private:
void closeConnection() {
// Lógica de limpeza
}
};
Tipos e Características de Métodos
| Tipo de Método |
Descrição |
Características Principais |
| Métodos Inline |
Definidos dentro da classe |
Otimização pelo compilador |
| Métodos Const |
Não podem modificar o estado do objeto |
Operações de leitura somente |
| Métodos Estáticos |
Pertencem à classe, não ao objeto |
Compartilhado entre instâncias |
Métodos Inline
Métodos inline são expandidos no local da chamada para desempenho:
class Point {
public:
// Método inline
inline double getDistance() {
return sqrt(x*x + y*y);
}
private:
double x, y;
};
Métodos Const
Métodos const garantem que não modificarão o estado do objeto:
class Rectangle {
public:
// Método Const
double getArea() const {
return width * height;
}
private:
double width;
double height;
};
Métodos Estáticos
Métodos estáticos pertencem à classe, não a instâncias específicas:
class MathUtility {
public:
// Método estático
static int square(int x) {
return x * x;
}
// Método estático para contar instâncias
static int getInstanceCount() {
return instanceCount;
}
private:
static int instanceCount;
};
Técnicas Avançadas de Funções Membro
- Sobrecarga de Métodos
- Argumentos Padrão
- Parâmetros de Referência e Ponteiros
Exemplo de Sobrecarga de Métodos
class Print {
public:
void display(int x) {
cout << "Inteiro: " << x << endl;
}
void display(string s) {
cout << "String: " << s << endl;
}
};
Boas Práticas
- Mantenha os métodos focados e modulares
- Utilize const para métodos de leitura somente
- Minimize a complexidade dos métodos
- Siga o princípio da responsabilidade única
Exemplo Completo no Ambiente LabEx
#include <iostream>
#include <string>
class BankAccount {
private:
string accountHolder;
double balance;
public:
// Construtor
BankAccount(string name, double initialBalance) {
accountHolder = name;
balance = initialBalance;
}
// Método para depósito
void deposit(double amount) {
balance += amount;
}
// Método const para verificar o saldo
double getBalance() const {
return balance;
}
// Método para exibir informações da conta
void displayInfo() {
cout << "Titular da Conta: " << accountHolder << endl;
cout << "Saldo: $" << balance << endl;
}
};
int main() {
BankAccount account("John Doe", 1000);
account.deposit(500);
account.displayInfo();
return 0;
}
Dominando as funções membro, os desenvolvedores podem criar classes C++ mais organizadas, eficientes e manuteníveis.