gpt4 book ai didi

c++ - 使用初始化列表程序工作正常,但直接分配时却不行

转载 作者:行者123 更新时间:2023-11-30 03:55:10 26 4
gpt4 key购买 nike

我是 C++ 新手,在编写实现智能指针的代码时遇到了这个问题并感到有些困惑。

template<typename T> class SP
{
T* pData;
public:
SP(T* pValue) : pData(pValue)
{
// pValue = pData;
}
T& operator*()
{
return *pData;
}
T* operator->()
{
return pData;
}
};

class Shape
{
float length;
float breadth;
float area;
public:
Shape()
{ }
Shape(float i,float j)
{
length = i;
breadth = j;
cout<<"Constructor called\n";
cout<<length<<breadth<<endl;
}
void calculateArea()
{
area = length * breadth;
}
void display()
{
cout<<"Lenght = "<<length<<endl;
cout<<"Breadth = "<<breadth<<endl;
cout<<"Area = "<<area<<endl;
}
};

int main()
{
SP<Shape> ptr(new Shape(1.1,2.2));
ptr->calculateArea();
ptr->display();
return 0;
}

如果我直接分配 pValue = pData; 我会看到一个内存错误,而当使用初始化程序时程序运行正常。

SP(T* pValue) : pData(pValue)

请帮助我了解使用初始化列表时编程如何正常运行。

最佳答案

您已经调换了作业。

代替

pValue = pData;

你想做什么

pData = pValue;

关于c++ - 使用初始化列表程序工作正常,但直接分配时却不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com