c++ 中的复制构造函数如何工作
How Does the copy constructor in c++ work?
当我将"obj"传递到函数中时,当我没有将"const Class &obj"传递给构造函数时,复制构造函数如何工作。 我有这个疑问,因为关于I C ++的书正在阅读,刚刚提到了什么是复制构造器以及如何实现它。 但没有提到它是如何被调用的。 我是 C++ 的新手。 我用谷歌搜索了它,但找不到它是怎么回事被召唤。提前感谢你:)
class Line{
public:
int getLength( void );
Line( int len ); // simple constructor
Line( const Line &obj); // copy constructor
private:
int *ptr;
};
// Member functions definitions including constructor
Line::Line(int len){
cout << "Normal constructor allocating ptr" << endl;
// allocate memory for the pointer;
ptr = new int;
*ptr = len;
}
Line::Line(const Line &obj){
cout << "Copy constructor allocating ptr." << endl;
ptr = new int;
*ptr = *obj.ptr; // copy the value
}
void display(Line obj){
cout << "Length of line : " << obj.getLength() <<endl;
}
// Main function for the program
int main( ){
Line line(10);
display(line);
return 0;
}
复制构造函数是一个特殊函数。在某些情况下,编译器会自动调用它。其中一个条件是,当函数中具有非引用参数,并将 L 值对象作为参数传递给该函数时。参数使用复制构造函数初始化,传递给函数的参数用作复制构造函数的参数。
编译器代表您执行各种操作,而无需显式执行这些操作。这是其中之一,它符合语言的规则。
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 当 int 方法工作正常时,void 方法有何不同,或者为什么我不能调用 void 方法?
- sdl软件渲染器不工作,工作在硬件加速的一个