Métodos (Funções Membro)
Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy — lição 8 de 104.
Funções membro definem o que um objeto pode fazer. Elas possuem um tipo de retorno, um nome e parâmetros opcionais.
Método que retorna um valor
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};Método void (sem valor de retorno)
class Printer {
public:
void printMessage(std::string msg) {
std::cout << msg << std::endl;
}
};Método que retorna bool
class Checker {
public:
bool isPositive(int num) {
return num > 0;
}
};Declarando no cabeçalho, implementando no arquivo fonte
// Calculator.h
class Calculator {
public:
int add(int a, int b);
};
// Calculator.cpp
int Calculator::add(int a, int b) {
return a + b;
}O tipo de retorno vem antes do nome do método. Use void quando um método não retorna nada. O operador de resolução de escopo :: vincula as implementações às suas classes.
Desafio
MédioImplemente quatro funções membro para a classe StringHelper com diferentes tipos de retorno e parâmetros:
getLength()— retornaint, o comprimento do textotoUpperCase()— retornastd::string, o texto em letras maiúsculascontains(std::string word)— retornabool, se o texto contém a palavrarepeat(int times)— retornastd::string, o texto repetido com espaços
Folha de consulta
Funções membros definem o que um objeto pode fazer. Elas possuem um tipo de retorno, um nome e parâmetros opcionais.
Método retornando um valor:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};Método void (sem valor de retorno):
class Printer {
public:
void printMessage(std::string msg) {
std::cout << msg << std::endl;
}
};Método retornando bool:
class Checker {
public:
bool isPositive(int num) {
return num > 0;
}
};Declarando no cabeçalho, implementando no arquivo fonte:
// Calculator.h
class Calculator {
public:
int add(int a, int b);
};
// Calculator.cpp
int Calculator::add(int a, int b) {
return a + b;
}O tipo de retorno vem antes do nome do método. Use void quando um método não retorna nada. O operador de resolução de escopo :: vincula as implementações à sua classe.
Experimente você mesmo
#include <iostream>
#include "StringHelper.h"
int main() {
std::string input;
std::getline(std::cin, input);
StringHelper helper;
helper.text = input;
std::cout << "Original: " << helper.text << std::endl;
std::cout << "Length: " << helper.getLength() << std::endl;
std::cout << "Uppercase: " << helper.toUpperCase() << std::endl;
std::cout << "Contains 'World': " << (helper.contains("World") ? "yes" : "no") << std::endl;
std::cout << "Repeated: " << helper.repeat(3) << std::endl;
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de OOP
Arquivos ExternosBuild e Compilação em C++Arquivos Header e SourceNamespaces e EscopoIntrodução a OOP em C++Classes vs ObjetosO Ponteiro 'this'Métodos (Funções Membro)Atributos (Membros de Dados)Básico de Ctors e DtorsRecapitulação - Calculadora Simples4Propriedades de Classe
Membros de Instância vs EstáticosGetters e SettersFunções de Membro ConstPalavra-chave MutableMétodos e Variáveis EstáticosFunções e Classes FriendRecapitulação - Gerenciador de Conta Bancária7Herança
Herança BásicaNíveis de Acesso na HerançaOrdem de Chamada de Ctor e DtorSobrescrita de MétodosFunções Virtuais e VTableHerança MúltiplaHerança VirtualRecapitulação - Hierarquia de Funcionários2Gerenciamento de Memória
Memória Stack vs HeapPonteiros e ReferênciasMemória Dinâmica (new/delete)Smart Pointers em C++RAII em C++Recapitulação - Gerenciador de Array Dinâmico5Encapsulamento
Especificadores de Acesso em C++Especificadores de Acesso em DetalhesOcultação de InformaçãoStruct vs ClassClasses Aninhadas e InternasRecapitulação - Sistema de Registros de Alunos8Polimorfismo
Polimorfismo de Compilação vs Tempo de ExecuçãoSobrecarga de FunçõesFunções Virtuais RevisitadasFunções Virtuais PurasClasses AbstratasDesign de Interfaces em C++Dynamic Casting e RTTIRecapitulação - Calculadora de Formas3Construtores e Destrutores
Construtor PadrãoConstrutor ParametrizadoConstrutor de CópiaConstrutor de MovimentaçãoListas de Inicialização do ConstrutorConstrutores DelegadosMergulho Profundo em DestrutoresRegra dos Três / Cinco / ZeroRecapitulação - Classe String6Sobrecarga de Operadores
Introdução à Sobrecarga de OperadoresSobrecarga de Operadores AritméticosSobrecarga de Operadores de ComparaçãoOperadores de StreamSobrecarga do Operador de AtribuiçãoSobrecarga dos Operadores [] e ()Operadores de Conversão de TipoRecapitulação - Classe Matrix9Templates
Templates de FunçãoTemplates de ClasseEspecialização de TemplatesTemplates VariádicosFundamentos de SFINAE e Type TraitsRecapitulação - Container Genérico