C ++大小感知数据类型/参数

时间:2012-05-30 16:25:01

标签: c++

我不确定,但我想我曾经看过一个看起来像这样的方法签名(在构造函数中):

class Buffer {
    Buffer(char_with_size *data) { ... };
    Buffer(char *data, size_t len) { ... };
};

在第一个构造函数调用中,可以传递一个数组/指针参数,编译器会自动知道它的大小。所以,我总是知道传递的char缓冲区的大小。

有人知道这是否真的存在于c ++中?

2 个答案:

答案 0 :(得分:4)

只有模板化的版本可能有意义:

Buffer(char * data, std::size_t len) { /* ... */ }

template <std::size_t N> Buffer(char (&data)[N]) : Buffer(data, N) { }

(请注意,委托构造函数是新的,并且还没有得到广泛的支持。例如,我只是在这里使用一个。)

答案 1 :(得分:0)

当然,Buffer(std::vector<char> data)。 (IOW,不要使用char*。)