SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Novedades de C++11
Albert Astals Cid
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Novedades de C++11
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
¿Quien es Albert Astals Cid?
 Ingeniero en Informática por la UPC
 Traductor en KDE desde 2002
 Programador en KDE desde 2003
 Mantenedor de KPDF/Okular desde 2004
 Miembro de KDE eV desde 2005, actualmente en la Junta Directiva
 Miembro fundador de KDE España, ex-presidente
 NO SOY UN EXPERTO EN C++11
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
¿Qué es C++11?
C++11 is a version of the standard for the
programming language C++. It was approved by
International Organization for Standardization (ISO)
on 12 August 2011, replacing C++03, and
superseded by C++14 on 18 August 2014.
It was formerly named C++0x because it was
expected to be published before 2010.
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
¿Lo cualo?
Que C++ puede
hacer más!
...
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Range-base for loop
int lista[2];
for (int i : lista)
std::cout << i << std::endl;
std::list<int> lista2;
for (int i : lista2)
std::cout << i << std::endl;
Cuidado con los contenedores de Qt!
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
auto
int lista[2];
for (auto i : lista)
std::cout << i << std::endl;
std::list<int> lista2;
for (auto i : lista2)
std::cout << i << std::endl;
auto *x = new Foo();
auto i = 3;
auto k = object->bar();
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Lambdas
auto func = [](int x, int y) { return x + y; };
std::cout << func(3, 4) << std::endl;
[capture](parameters) -> return_type { function_body }
capture puede ser
[]
[x, &y]
[&]
[=]
[&, x]
[=, &z]
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Lambdas (y 2)
std::vector<int> some_list;
int total = 0;
std::for_each(begin(some_list), end(some_list), [&total](int x) { total += x; });
QObject::connect(myTimer, &QTimer::timeout, [] { do_something() });
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Constructores anidados
class MiClase
{
public:
MiClase(int number) : m_number(number) {}
MiClase() : MiClase(42) {}
private:
int m_number;
};
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Inicialización de variables en definición
class MiClase
{
public:
MiClase() {}
private:
int m_number = 42;
};
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Override
struct Base {
virtual void some_func(float);
};
struct Derived : Base {
virtual void some_func(int); // Seguro que es lo que querias?
};
struct Derived2 : Base {
void some_func(int) override; // Meeec
};
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Final
struct Base1 final { };
struct Derived1 : Base1 {}; // Meeec
struct Base2 {
virtual void some_func(int);
};
struct Derived2 : Base2 {
void some_func(int) final override;
};
struct Derived3 : Derived2 {
void some_func(int) override; // Meeec
};
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
nullptr
struct MiClase { };
static void func(int i) { std::cout << "Entero " << i << std::endl; }
static void func(MiClase *mc) { std::cout << "MiClase " << mc << std::endl; }
int main(int argc, char **argv)
{
func(NULL); // Meeec, error o func(int) dependiendo del compilador
func(nullptr);
}
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Inicialización uniforme
class IdString {
public:
std::string name;
int identifier;
};
IdString get_string() {
return {"foo", 42};
}
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Enums con tipo
class Email
{
public:
enum Importance {
Low,
High
};
enum TrustLevel { // MEEEEEEEEEC
Low,
High
};
};
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Enums con tipo (y 2)
class Email
{
public:
enum class Importance { Low, High };
enum class TrustLevel { Low, High };
};
void func() {
TrustLevel tl = TrustLevel::Low;
if (tl == Importance::Low) { // Meeeec, en C++03 warning dependiendo de flags
}
}
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
constexpr
constexpr int get_five() {return 5;}
int some_value[get_five() + 7];
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Cosas «básicas»
Multithreading (std::thread, std::mutex, etc.)
Smart pointers
Hash tables
Expresiones regulares
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
Y Más!
Move constructors
Extern templates
Template aliases
Varidic templates
División de tipos POD en trivial y standard-layout
Unrestricted unions
...
...
...
Sebastian Kügler <sebas@kde.org>, FrOSCon 2006
Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos
Novedades de C++11Novedades de C++11
¿Preguntas?

Más contenido relacionado

Similar a Novedades de C++11

Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestosNery Davila
 
Ejercicios propuestosc++
Ejercicios propuestosc++Ejercicios propuestosc++
Ejercicios propuestosc++Mauricio Moya
 
El artista antes conocido como KDE 5 - Akademy-es 2014
El artista antes conocido como KDE 5 - Akademy-es 2014El artista antes conocido como KDE 5 - Akademy-es 2014
El artista antes conocido como KDE 5 - Akademy-es 2014kdeespana
 
Aprende a programar con KDE y una patata
Aprende a programar con KDE y una patataAprende a programar con KDE y una patata
Aprende a programar con KDE y una patatakdeespana
 
Akademy es2010 herramientas_valgrind_albert_astals
Akademy es2010 herramientas_valgrind_albert_astalsAkademy es2010 herramientas_valgrind_albert_astals
Akademy es2010 herramientas_valgrind_albert_astalsAkademyEs2010
 
Debugando con Valgrind
Debugando con ValgrindDebugando con Valgrind
Debugando con Valgrindkdeespana
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-CErick Camacho
 
Introducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOSIntroducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOSEduard Tomàs
 
Formato_Desarrollo_del_Proyecto
Formato_Desarrollo_del_ProyectoFormato_Desarrollo_del_Proyecto
Formato_Desarrollo_del_ProyectoUPN_COMMUNICATION
 
Formato de desarrollo_del_proyecto
Formato de desarrollo_del_proyectoFormato de desarrollo_del_proyecto
Formato de desarrollo_del_proyectoUPN_COMMUNICATION
 
Estructura de un programa básico en c++
Estructura de un programa básico en c++Estructura de un programa básico en c++
Estructura de un programa básico en c++UVM
 
Introducción a Qt
Introducción a QtIntroducción a Qt
Introducción a Qtdgalo88
 

Similar a Novedades de C++11 (20)

Ejercicios propuestos
Ejercicios propuestosEjercicios propuestos
Ejercicios propuestos
 
Ejercicios propuestosc++
Ejercicios propuestosc++Ejercicios propuestosc++
Ejercicios propuestosc++
 
El artista antes conocido como KDE 5 - Akademy-es 2014
El artista antes conocido como KDE 5 - Akademy-es 2014El artista antes conocido como KDE 5 - Akademy-es 2014
El artista antes conocido como KDE 5 - Akademy-es 2014
 
Aprende a programar con KDE y una patata
Aprende a programar con KDE y una patataAprende a programar con KDE y una patata
Aprende a programar con KDE y una patata
 
Tara
TaraTara
Tara
 
Akademy es2010 herramientas_valgrind_albert_astals
Akademy es2010 herramientas_valgrind_albert_astalsAkademy es2010 herramientas_valgrind_albert_astals
Akademy es2010 herramientas_valgrind_albert_astals
 
Debugando con Valgrind
Debugando con ValgrindDebugando con Valgrind
Debugando con Valgrind
 
Ejercicios en c sharp consola
Ejercicios en c sharp consolaEjercicios en c sharp consola
Ejercicios en c sharp consola
 
Integrando Swift y Objective-C
Integrando Swift y Objective-CIntegrando Swift y Objective-C
Integrando Swift y Objective-C
 
Introducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOSIntroducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOS
 
KDE y Qt 5
KDE y Qt 5KDE y Qt 5
KDE y Qt 5
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Proyecto matediscreta
Proyecto matediscretaProyecto matediscreta
Proyecto matediscreta
 
Formato_Desarrollo_del_Proyecto
Formato_Desarrollo_del_ProyectoFormato_Desarrollo_del_Proyecto
Formato_Desarrollo_del_Proyecto
 
Formato de desarrollo_del_proyecto
Formato de desarrollo_del_proyectoFormato de desarrollo_del_proyecto
Formato de desarrollo_del_proyecto
 
Python y Flink
Python y FlinkPython y Flink
Python y Flink
 
Ejercicios de consola en c++
Ejercicios de consola en c++Ejercicios de consola en c++
Ejercicios de consola en c++
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Estructura de un programa básico en c++
Estructura de un programa básico en c++Estructura de un programa básico en c++
Estructura de un programa básico en c++
 
Introducción a Qt
Introducción a QtIntroducción a Qt
Introducción a Qt
 

Más de kdeespana

Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017kdeespana
 
Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017kdeespana
 
KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve kdeespana
 
Descubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEDescubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEkdeespana
 
La potencia del Terminal
La potencia del TerminalLa potencia del Terminal
La potencia del Terminalkdeespana
 
10 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 201610 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 2016kdeespana
 
Kool Desktop Environment
Kool Desktop EnvironmentKool Desktop Environment
Kool Desktop Environmentkdeespana
 
openQA y Open Build System
openQA y Open Build SystemopenQA y Open Build System
openQA y Open Build Systemkdeespana
 
KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto kdeespana
 
Qt5 en distintas plataformas
Qt5 en distintas plataformasQt5 en distintas plataformas
Qt5 en distintas plataformaskdeespana
 
Next gen Desktop Apps
Next gen Desktop AppsNext gen Desktop Apps
Next gen Desktop Appskdeespana
 
KDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirveKDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirvekdeespana
 
KDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert VacaKDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert Vacakdeespana
 
Next gen-apps
Next gen-appsNext gen-apps
Next gen-appskdeespana
 
Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014kdeespana
 
Baloo - Akademy-es 2014
Baloo - Akademy-es 2014Baloo - Akademy-es 2014
Baloo - Akademy-es 2014kdeespana
 
Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014kdeespana
 
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014kdeespana
 
Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014kdeespana
 

Más de kdeespana (20)

Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017Desarrollando software libre sin ser informático akademy es 2017
Desarrollando software libre sin ser informático akademy es 2017
 
Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017Slimbook - Welcome to Freedom - Akademy-es 2017
Slimbook - Welcome to Freedom - Akademy-es 2017
 
KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve KDE España: Qué es y para que sirve
KDE España: Qué es y para que sirve
 
Descubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDEDescubre plasma 5, el escritorio de la Comunidad KDE
Descubre plasma 5, el escritorio de la Comunidad KDE
 
La potencia del Terminal
La potencia del TerminalLa potencia del Terminal
La potencia del Terminal
 
10 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 201610 formas de colaborar akademy es 2016
10 formas de colaborar akademy es 2016
 
Kool Desktop Environment
Kool Desktop EnvironmentKool Desktop Environment
Kool Desktop Environment
 
openQA y Open Build System
openQA y Open Build SystemopenQA y Open Build System
openQA y Open Build System
 
Plasma Next
Plasma NextPlasma Next
Plasma Next
 
KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto KDE Frameworks, cuando Qt se nos queda corto
KDE Frameworks, cuando Qt se nos queda corto
 
Qt5 en distintas plataformas
Qt5 en distintas plataformasQt5 en distintas plataformas
Qt5 en distintas plataformas
 
Next gen Desktop Apps
Next gen Desktop AppsNext gen Desktop Apps
Next gen Desktop Apps
 
KDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirveKDE España: Qué es y para qué sirve
KDE España: Qué es y para qué sirve
 
KDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert VacaKDE connect - Akademy-es 2014 por Albert Vaca
KDE connect - Akademy-es 2014 por Albert Vaca
 
Next gen-apps
Next gen-appsNext gen-apps
Next gen-apps
 
Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014Kde experience - Akademy-es 2014
Kde experience - Akademy-es 2014
 
Baloo - Akademy-es 2014
Baloo - Akademy-es 2014Baloo - Akademy-es 2014
Baloo - Akademy-es 2014
 
Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014Es el momento de KDE - Akademy-es 2014
Es el momento de KDE - Akademy-es 2014
 
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
ASAN Un debugger de memoria en tu compilador - Akademy-es 2014
 
Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014Mi momento kde Akademy-es 2014
Mi momento kde Akademy-es 2014
 

Novedades de C++11

  • 1. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Novedades de C++11 Albert Astals Cid
  • 2. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Novedades de C++11 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos ¿Quien es Albert Astals Cid?  Ingeniero en Informática por la UPC  Traductor en KDE desde 2002  Programador en KDE desde 2003  Mantenedor de KPDF/Okular desde 2004  Miembro de KDE eV desde 2005, actualmente en la Junta Directiva  Miembro fundador de KDE España, ex-presidente  NO SOY UN EXPERTO EN C++11
  • 3. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 ¿Qué es C++11? C++11 is a version of the standard for the programming language C++. It was approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03, and superseded by C++14 on 18 August 2014. It was formerly named C++0x because it was expected to be published before 2010.
  • 4. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 ¿Lo cualo? Que C++ puede hacer más! ...
  • 5. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Range-base for loop int lista[2]; for (int i : lista) std::cout << i << std::endl; std::list<int> lista2; for (int i : lista2) std::cout << i << std::endl; Cuidado con los contenedores de Qt!
  • 6. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 auto int lista[2]; for (auto i : lista) std::cout << i << std::endl; std::list<int> lista2; for (auto i : lista2) std::cout << i << std::endl; auto *x = new Foo(); auto i = 3; auto k = object->bar();
  • 7. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Lambdas auto func = [](int x, int y) { return x + y; }; std::cout << func(3, 4) << std::endl; [capture](parameters) -> return_type { function_body } capture puede ser [] [x, &y] [&] [=] [&, x] [=, &z]
  • 8. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Lambdas (y 2) std::vector<int> some_list; int total = 0; std::for_each(begin(some_list), end(some_list), [&total](int x) { total += x; }); QObject::connect(myTimer, &QTimer::timeout, [] { do_something() });
  • 9. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Constructores anidados class MiClase { public: MiClase(int number) : m_number(number) {} MiClase() : MiClase(42) {} private: int m_number; };
  • 10. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Inicialización de variables en definición class MiClase { public: MiClase() {} private: int m_number = 42; };
  • 11. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Override struct Base { virtual void some_func(float); }; struct Derived : Base { virtual void some_func(int); // Seguro que es lo que querias? }; struct Derived2 : Base { void some_func(int) override; // Meeec };
  • 12. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Final struct Base1 final { }; struct Derived1 : Base1 {}; // Meeec struct Base2 { virtual void some_func(int); }; struct Derived2 : Base2 { void some_func(int) final override; }; struct Derived3 : Derived2 { void some_func(int) override; // Meeec };
  • 13. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 nullptr struct MiClase { }; static void func(int i) { std::cout << "Entero " << i << std::endl; } static void func(MiClase *mc) { std::cout << "MiClase " << mc << std::endl; } int main(int argc, char **argv) { func(NULL); // Meeec, error o func(int) dependiendo del compilador func(nullptr); }
  • 14. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Inicialización uniforme class IdString { public: std::string name; int identifier; }; IdString get_string() { return {"foo", 42}; }
  • 15. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Enums con tipo class Email { public: enum Importance { Low, High }; enum TrustLevel { // MEEEEEEEEEC Low, High }; };
  • 16. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Enums con tipo (y 2) class Email { public: enum class Importance { Low, High }; enum class TrustLevel { Low, High }; }; void func() { TrustLevel tl = TrustLevel::Low; if (tl == Importance::Low) { // Meeeec, en C++03 warning dependiendo de flags } }
  • 17. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 constexpr constexpr int get_five() {return 5;} int some_value[get_five() + 7];
  • 18. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Cosas «básicas» Multithreading (std::thread, std::mutex, etc.) Smart pointers Hash tables Expresiones regulares
  • 19. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 Y Más! Move constructors Extern templates Template aliases Varidic templates División de tipos POD en trivial y standard-layout Unrestricted unions ... ... ...
  • 20. Sebastian Kügler <sebas@kde.org>, FrOSCon 2006 Akademy-es 2016 – Madrid - Albert Astals Cid <aacid@kde.org> - @tsdgeos Novedades de C++11Novedades de C++11 ¿Preguntas?