[英]what is the convention for calling overloaded = operator in C++ using pointers?
当为类重载“ =”运算符时,通常的语法是:
ClassA ObjA, ObjB;
ObjA = ObjB;
但是指针呢?
Class *PtrA, *PtrB;
PtrA->operator=(PtrB)
假设ClassA中的=
运算符为类上的指针定义了( ClassA* operator=(const ClassA* obj)
),上述调用约定是否正确?
通常,只为类而不是指针定义赋值运算符,然后您可以执行以下操作:
*ptrA = *ptrB;
不是你的例子
Class *PtrA, *PtrB;
PtrA->operator=(PtrB)
您没有传递PtrB的实例,而是传递了指向PtrB的指针。
当然,实际上,您的代码实际上没有任何意义。 你不能说
Class *PtrA, *PtrB;
我想你是说
Class A
{
}
Class B
{
B operator=(const A &rhs){...}
}
A *ptra = ...
B *ptrb = ...
在这种情况下,您可以
*ptrb = *ptra;
要么
ptrb->operator=(*ptra);
你当然不能走
ptrb->operator=(ptra)
或(等效的简单语法)
*ptrbb = ptra
如果ClassA
的赋值运算符接受ClassA *
(或const ClassA *
)类型的参数,则可以将其称为
PtrA->operator =(PtrB);
或作为
*PtrA = PtrB;
出于显而易见的原因,后者是使用分配运算符的更自然的方法。
但是,将赋值运算符定义为接受ClassA *
类型的参数是一件很奇怪的事情。 通常, ClassA
赋值运算符将接受const ClassA &
类型的参数,并作为
*PtrA = *PtrB;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.