qiu*_*bit 2 c++ constructor pointers
我正在创建一个具有初始化构造函数的类,const char*应该使用缓冲区中提供的应该包含字符串的数据安全地构造对象.我担心的是,用户可以使用带有错误数据的构造函数,例如NULL指向未分配内存的指针或指针等等.关键是,在这种情况下,我想完成创建对象(它将处于未定义但正确的状态),而不会导致段错误,例如,如果用户向我发送了指向我不应该读取的数据的指针.我想将所有输入验证发送到std::string构造函数,因此构造函数看起来像这样:
Foo(const char *s) : Foo(std::string(s)) {}
Run Code Online (Sandbox Code Playgroud)
但我的老师称这是一个"错误的想法".那么,处理这种情况的正确方法是什么呢?
还有一件事,我不能在这种情况下使用例外(这是我课程作业的一部分,当然还没有教过它).
问题是有一些你绝对无法检查的事情.该组中最大的一个是指向无效内存的指针.例如 :
char* blarg = new char[50];
delete blarg;
Foo(blarg);
Run Code Online (Sandbox Code Playgroud)
这是关于你所问的问题的另一个对话.有一些好的答案,但他们基本上说同样的事情.当处理指针输入时,没有办法100%确定用户没有做一些愚蠢的事情,比如在传入之前调用指针上的delete.