如果复制列表初始化允许显式构造函数,可能会出现什么问题?
在 C++ 标准 §13.3.1.7 [over.match.list] 中,有以下规定: 在复制列表初始化中,如果选择显式构造函数,则初始化格式错误。 这就是为什么我们不能这…
标记所有 C++ 有什么缺点吗?构造函数显式?
有几次,在重构代码时,我忘记在向以前的无参数构造函数添加参数或从以前的多参数构造函数中删除参数时添加 explicit 关键字。为了防止这种情况发生,…
C++ 中放置 new VS 显式构造函数调用
最近我遇到了这两种在内存中特定位置创建对象的方法: 1. void* mem = malloc(sizeof(T)); T* obj = new(mem) T(); 2. T* obj = (T*)malloc(sizeof(T)…
c++继承问题
我对此有一个问题: class A { int a; int* pa; public: A(int i):a(i) , pa(new int(a)) { cout<<"A ctor"<
为什么默认构造函数和具有 2 个或更多(非默认)参数的构造函数允许显式调用?
我知道带有一个(非默认)参数的构造函数就像隐式转换器,它从该参数类型转换为类类型。但是,explicit 可用于限定任何构造函数、不带参数的构造函数…
C++ -- 为什么我们应该在这个构造函数中使用显式?
请参阅维基百科:策略模式(C++) class Context { private: StrategyInterface * strategy_; public: explicit Context(StrategyInterface *strategy…
C 中显式赋值和隐式赋值有什么区别?
int value = 5; // this type of assignment is called an explicit assignment int value(5); // this type of assignment is called an implicit as…
C++已弃用从字符串常量到“char*”的转换
我有一个带有私有 char str[256]; 的类 ,并且我有一个显式构造函数: explicit myClass(char *func) { strcpy(str,func); } 我将其称为: myClass ob…
如果我使用显式构造函数,是否需要将关键字放在 .h 和 .cpp 文件中?
其实我的问题都在标题里。 无论如何: 我有一个类,我使用显式构造函数: .h class MyClass { public: explicit MyClass(const string& s): query(s) …