C++11 CPP11 学习

常成员函数

const对象只能调用常成员函数

const Node* node = Node::create();
node->setPostion(ccp(0,0)); //出错
node->getPostion(); //不会报错

//定义
{
    const Vec2& Node::getPostion() const{
        return _postion;
    }
}

联合关键字

将包含的值全部放在一个内存里, 想取内部任意一个类型, 都从同一个地址取值, 节省变量占用的空间

auto val = cocos2d::Value();
value.asInt();

//定义
union{
    unsigned char byteVal;
    int intVal;
    float floatVal;
    double doubleVal;
    bool boolVal;
    std::string* strVal;
    ValueVector* vectorVal;
    ValueMap* mapVal;
    ValueMapIntKey* intKeyMapVal;
}_field;

多重继承

//c同时继承a和b
ClassC* clsC = new ClassC;
//没有问题
ClassA* clsA = (ClassA*)clsC;
ClassB* clsB = (ClassB*)clsC;
//有问题!!!!
ClassA* clsA = (ClassA*)clsC;
ClassB* clsB = (ClassB*)clsA;
//没有问题
ClassA* clsA = (ClassC*)clsC;
ClassB* clsB = (ClassC*)clsA;

//定义A
class ClassA{
protected: int _valueA;
public:
    ClassA();
    virtual ~ClassA();
    int getValueA();
}

ClassA::ClassA():_valueA(10){}
ClassA::~ClassA(){}
int ClassA::getValueA(){
    return _valueA;
}

//定义B
class ClassB{
protected: int _valueB;
public:
    ClassB();
    virtual ~ClassB();
    int getValueB();
}

ClassB::ClassB():_valueB(20){}
ClassB::~ClassB(){}
int ClassB::getValueB(){
    return _valueB;
}

//定义C
class ClassC:public ClassA, public ClassB{
public:
    ClassC();
    virtual ~ClassC();
}

ClassC::ClassC(){}
ClassC::~ClassC(){}

auto关键字

自动识别变量的类型

//使用方法
auto a=1;
auto b=3;
a=true;//不会报错, 自动将boolean转换为int类型
a=cocos2d::Node::create();//报错, 无法转换为int类型

//auto lambda参照lambda

//智能指针 转换方法
auto obj= std::shared_ptr<ClassC>(new ClassC);
auto objA= std::static_pointer_cast<ClassA>(obj);
auto objB= std::static_pointer_cast<ClassB>(obj);

lambda表达式

匿名函数表达式

auto func1=getAddFunc(10);
auto func2=getAddFunc(20);


//定义
std::function<int(int b)> getAddFunc(int a);

std::function<int(int b)> MyClass::getAddFunc(int a){
    auto func=[a](int b){
        return a+b;
    }
    return func;
}

标准库Vector排序

参考: http://blog.csdn.net/ihadl/article/details/7400929

其他参考:

极客学院C++

关于std::map中的find和[]的问题

STL中的string的substr问题

std::move和std::forward源码分析

move语义

map如何判断一个key是否存在?

allocating an object of abstract class type “xxxx”解决办法
C++ 报错:allocating an object of abstract class type “xxxx”通常是该类,有未实现的虚函数,需要实现。

const char*作为返回值的困惑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值