我定义了一个Integer
包含int
值的简单类,调用std::make_shared<Integer>(&ref)
将强制程序使用接受int
. 我是否实现了错误的复制构造函数,或者我的使用有问题std::make_shared
?打电话有什么区别std::make_shared<Integer>(ref)
?另外,为什么不Integer copied_integer(integer);
使用复制构造函数?Integer copied_integer(&integer);
也是不允许的。
这是代码
#include <memory>
#include <iostream>
#include "DoubleLinkedList.h"
class Integer {
private:
int number;
public:
Integer(int number) : number(number) {}
Integer(const Integer &integer) : number(integer.number) {}
Integer& operator=(const Integer& other) {
if (this != &other) {
number = other.number;
}
return *this;
}
int get() { return number; }
};
int main() {
Integer integer(30);
const Integer &ref = integer;
Integer copied_integer(integer);
auto pointer = std::make_shared<Integer>(&ref);
auto sp = std::make_shared<Integer>(10);
std::cout << "sp -> " << sp->get() << std::endl;
std::cout << "pointer -> " << pointer->get() << std::endl;
return 0;
}