类构造函数,超载构造函数和对象初始化
Class constructors, overloaded constructors and object initialization
来自C 教程,章节(i),超载构造函数:
但是此示例还介绍了一个特殊的构造函数:默认构造函数。默认构造函数是不使用参数的构造函数,这很特别,因为在声明对象但未使用任何参数初始化对象时称呼它。在上面的示例中,默认构造函数用于RECTB。请注意,甚至没有用空括号组构建RecTB - 实际上,空括号无法使用默认构造函数:
Rectangle rectb; // ok, default constructor called
Rectangle rectc(); // oops, default constructor NOT called
这是因为括号的空括号将构成rectc a函数声明而不是对象声明:它将是一个不进行参数并返回类型矩形的值的函数。
所以,据我了解:
class someclass {
public:
someclass() {
std::cout << "Default constructor" << std::endl;
}
someclass(int arg) {
std::cout << "Constructor that uses passed argument (" << arg << " in this case)" << std::endl;
}
};
int main() {
someclass object1;
//outputs "Default constructor"
someclass object2(1294);
//outputs "Constructor that uses passed argument (1294 in this case)"
}
但是如何定义一个称为someclass object();
的构造函数?我的想法是 someclass(void) {}
(不确定这一点)或为参数使用默认值(someclass(int arg = 1294) {}
),但是如何正确处理这种情况?
您可以使用冗长的构造方式:
someclass object1 = someclass();
someclass object();
不会呼叫,因为编译器认为它是一个不进行参数并返回 someClass 实例的函数的声明。
相关文章:
- 对象实例化调用构造函数的次数太多
- Arduino C++在构造函数中用参数声明对象数组
- 模板,函数使用错误的构造函数来复制我的对象
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- 通过构造函数创建的所有对象都具有相同的向量
- 是什么让放置新调用对象的构造函数?
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- C++ 对象指针数组的复制构造函数
- 在构造函数中输入对象时C++类成员作用域
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 如何从构造函数副本 T(const T&)调用对象 T?
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 如何将我编写的对象传递到另一个类的构造函数中?
- 使用向量初始化参数化构造函数的对象数组
- 在C++中将对象从另一个类传递到另一个类的构造函数?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 构造函数对象赋值是否泄漏内存
- gcc中不可移动构造函数对象的std::函数