gpt4 book ai didi

c++ - 结构与类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:00 28 4
gpt4 key购买 nike

// By using structure :     
struct complex {
float real;
float imag;
};

complex operator+(complex, complex);

main() {
complex t1, t2, t3;
t3 = t1 + t2;
}

complex operator+(complex w, complex z) {
statement 1;
statement 2;
}

// By using class :
class complex {
int real;
int imag;

public:
complex operator+(complex c) {
statement 1;
statement 2;
}

main() {
complex t1, t2, t3;
t3 = t1 + t2;
}

在使用结构时,重载函数可以接受两个参数,而在使用类时,重载函数只接受一个参数,当重载运算符函数在两种情况下都是成员函数时,即在结构和类中。为什么会这样?

最佳答案

这与类与结构无关。这是关于成员(member)与非成员(member)的。

C++ 中的类和结构的不同之处仅在于它们对成员和基类的默认可访问性级别(结构为公共(public),类为私有(private))。除此之外,完全没有区别。

重载运算符时,您几乎总是可以选择将运算符定义为成员还是独立函数。只有 4 个运算符(operator)必须是成员。它们是:()[]->=(至于原因,请参阅 this question of mine) .对于其余的,选择是你的。

这个出色的 FAQ entry 解释了(除其他外)如何在成员(member)与非成员(member)之间做出选择。

回答你的核心问题:在成员函数的情况下,第一个参数是 *this

关于c++ - 结构与类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321676/

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