一个类的名称是一个指针吗??
比如这里有一个类class Complex
{
public:
Complex();
Complex(double r, double i);
Complex complex_add(Complex &d);
void print();
private:
double real;
double imag;
};
Complex::Complex()
{
real = 0;
imag = 0;
}
Complex::Complex(double r, double i)
{
real = r;
imag = i;
}
Complex Complex::complex_add(Complex &d) //输入的是地址,说明类的名称是地址
{
Complex c;
c.real = real + d.real; //指针的话不应该是d->real吗??
c.imag = imag + d.imag;//d->imag
return c;
}
void Complex::print()
{
std::cout << "(" << real << ", " << imag << "i)\n";
}
int main()
{
Complex c1(3, 4), c2(5, -10), c3;//新建一个类
c3 = c1.complex_add(c2);
std::cout << "c1 = ";
c1.print();
std::cout << "c2 = ";
c2.print();
std::cout << "c1 + c2 = ";
c3.print();
return 0;
}
主要是这个函数的问题
Complex Complex::complex_add(Complex &d) //输入的是地址,说明类的名称是地址
{
Complex c;
c.real = real + d.real; //指针的话不应该是d->real吗??
c.imag = imag + d.imag;//d->imag
return c;
}
之前有碰到过
complex *p = c1;
p->Complex complex_add();
搞的我好混乱呀,这个语法 本帖最后由 风扫地 于 2019-6-17 16:49 编辑
另外:
类名
对象名
你好像区分得不太清楚。。
Complex c;
Complex 是class_name
c 是object_name
Complex & d = c;
Complex 是class_name
c 是object_name
d 表示是c对象的一个引用,也就是别名的意思,同一个对象的别名,在传引用的作为函数参数的情况下,你也可以认为是一个指向原对象的指针,实际上在底层也会退化成原对象指针,但在C++语法的使用中传入时不需要取地址,使用时不需用 ->,编译器会处理这些问题。 这个叫传引用。在搜索引擎内搜索关键字 "C++ 传引用" 风扫地 发表于 2019-6-17 09:53
另外:
类名
对象名
直接打印对象名,就是一个指针,和类里面打印this指针相等。
之前不是说过指针都是 p-> ,来引用里面的变量或者函数吗,或者(*p).
这样就搞的我很混乱。。。。。
总之编译器会处理的吧 方大侠 发表于 2019-6-18 12:13
直接打印对象名,就是一个指针,和类里面打印this指针相等。
之前不是说过指针都是 p-> ,来引用里面的 ...
指针和引用还是有区别的,引用是别名啊,借助搜素引擎再理解下。 风扫地 发表于 2019-6-18 13:51
指针和引用还是有区别的,引用是别名啊,借助搜素引擎再理解下。
引用我知道,我的意思是直接打印对象的名称就是一个指针呀。。。
一般涉及一个对象内部的变量或者函数,也是靠这个对象的名称(指针)来寻找的,
但是对象是用.
指针是用->
想了一下应该是后来扩展用的指针->,同时保留了之前的 . 的操作吧
页:
[1]