C++2.0(C++11) 笔记 二

简介: C++2.0(C++11) 笔记 二

Variadic Template

#include<iostream>
using namespace std;
void printX(){
}
template<typename T , typename... args>
void printX(const T& f1 , const args&... f2){
    cout << f1 << endl;
    printX(f2...);
}
int main(){
    printX(22 , "hello" , 23 , 24 , 25);
    return 0;
}
// 如果想知道传进来的这一包东西有几个,  可以使用sizeof...(args);

例二: 重写printf

void PrintX(const char* p){
    while(*p){
        if(*p == '%' && *(++p) != '%'){
        }
        cout << *p++;
    }
}
template<typename T , typename... Args>
void PrintX(const char* p , T type , Args... arg){
    while(*p){
        if(*p == '%' && *(++p) != '%'){
            cout << type << ' ' ;
            PrintX(++p , arg...);
            return;
        }
    }    
}
int main(){
    PrintX("%d%d%d" , 23 , 24 , 25);
    return 0;
}

第六种:   可以利用这种形式,到底要把哪几种类型组合成一包。这种做法非常的精简巧妙。   但是这么用会报错,直接写出它的类型即可。

 

可以用decltype类型推导

Rvalues references

右值是不可以出现在左边的,而什么是右值呢,最常见的就是临时对象。

这是一个不完美的转接。

如何设计一个具备移动语义意识的classs:

hashtable

hash function

Tuple

 

目录
相关文章
|
2月前
|
Java 编译器 C++
C++入门指南:类和对象总结笔记(下)
C++入门指南:类和对象总结笔记(下)
29 0
|
2月前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
34 0
|
2月前
|
安全 程序员 Linux
【C++】—— c++11之智能指针
【C++】—— c++11之智能指针
|
2月前
|
并行计算 安全 程序员
【C++】—— C++11之线程库
【C++】—— C++11之线程库
|
2月前
|
编译器 C++
【C++】—— c++11新的类功能
【C++】—— c++11新的类功能
|
2月前
|
算法 编译器 C++
【C++】—— c++11新特性之 lambda
【C++】—— c++11新特性之 lambda
|
2天前
|
安全 Java 程序员
【C++笔记】从零开始认识继承
在编程中,继承是C++的核心特性,它允许类复用和扩展已有功能。继承自一个基类的派生类可以拥有基类的属性和方法,同时添加自己的特性。继承的起源是为了解决代码重复,提高模块化和可维护性。继承关系中的类形成层次结构,基类定义共性,派生类则根据需求添加特有功能。在继承时,需要注意成员函数的隐藏、作用域以及默认成员函数(的处理。此外,继承不支持友元关系的继承,静态成员在整个继承体系中是唯一的。虽然多继承和菱形继承可以提供复杂的设计,但它们可能导致二义性、数据冗余和性能问题,因此在实际编程中应谨慎使用。
5 1
【C++笔记】从零开始认识继承
|
7天前
|
设计模式 安全 编译器
【代码片段】【C++】C++11线程安全单例模式
【代码片段】【C++】C++11线程安全单例模式
12 1
|
18天前
|
存储 安全 编译器
【C++进阶】C++11入门基础
【C++进阶】C++11入门基础
24 0
|
2月前
|
编译器 C语言 C++
C++入门指南:类和对象总结笔记(中)
C++入门指南:类和对象总结笔记(中)
49 0