C++ Effective详解

用来放置类进行隐式转换

例如一个类有一个形参是int的构造函数

如下,在Pos的vector push的时候 ,直接使用一个int 就可以隐式转换为Pos

如果不想被隐式转换 就加上explicit关键字

#include <iostream>
#include <tuple>
#include <queue>
#include <stack>
#include <list>

using namespace std;

#define debug(x) cout<<#x<<": "<<(x)<<endl;

class Pos {

public:

    Pos() {
    }

    Pos(int x) {
    }
};

int main(int argc, const char* argv[]) {

    vector<Pos> arr;
    //arr.reserve(1e5);
    for (int i = 0; i < 1e5; ++i) {
        arr.push_back(1);
    }
    return 0;
}

编译成功!

#include <iostream>
#include <tuple>
#include <queue>
#include <stack>
#include <list>

using namespace std;

#define debug(x) cout<<#x<<": "<<(x)<<endl;

class Pos {

public:

    explicit Pos() {
    }

    explicit Pos(int x) {
    }
};

int main(int argc, const char* argv[]) {

    vector<Pos> arr;
    //arr.reserve(1e5);
    for (int i = 0; i < 1e5; ++i) {
        arr.push_back(1);
    }

    return 0;
}

编译失败!

size_t cnt = 0;
for(auto &row : a)
	for (auto &col : row){
		col = cnt;
		++cnt;
	}
int *ip[4];    // 整型指针的数组
int (*ip)[4];  // 指向含有4个整数的数组

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的
为您推荐
    暂时没有数据