我不确定,但我想我曾经看过一个看起来像这样的方法签名(在构造函数中):
class Buffer {
Buffer(char_with_size *data) { ... };
Buffer(char *data, size_t len) { ... };
};
在第一个构造函数调用中,可以传递一个数组/指针参数,编译器会自动知道它的大小。所以,我总是知道传递的char缓冲区的大小。
有人知道这是否真的存在于c ++中?
答案 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*
。)