C++ 在C++;上课?
在C++ 在C++;上课?,c++,class,reference,return-by-reference,C++,Class,Reference,Return By Reference,在C++中,如果我键入: int x=5; int &y=x; 然后,y将作为存储原始x的存储位置的别名,这可以通过打印x和y的存储位置来验证/测试 类似程序的输出如下: x is at location: 0x23fe14 y is at location: 0x23fe14 但是课程怎么办 当成员函数以返回类型作为引用声明,并且函数使用此指针时,函数实际返回的是什么 例如: #include <iostream> class simple { int data
C++
中,如果我键入:
int x=5;
int &y=x;
然后,y
将作为存储原始x
的存储位置的别名,这可以通过打印x
和y
的存储位置来验证/测试
类似程序的输出如下:
x is at location: 0x23fe14
y is at location: 0x23fe14
但是课程怎么办
当成员函数以返回类型作为引用声明,并且函数使用此
指针时,函数实际返回的是什么
例如:
#include <iostream>
class simple
{
int data;
public:
// ctor
simple():
data(0)
{}
// getter function
int& getter_data()
{ return this->data; }
// modifier functions
simple& add(int x=5)
{ this->data += x;
return *this;
}
simple& sub(int x=5)
{ this->data -= x;
return *this;
}
};
int main()
{ simple obj;
obj.add().sub(4); ////////// how & why is it working? /////////
std::cout<<obj.getter_data();
getchar();
}
#包括
简单类
{
int数据;
公众:
//执行器
简单()
数据(0)
{}
//吸气剂函数
int&getter_data()
{返回此->数据;}
//修饰函数
简单和添加(int x=5)
{此->数据+=x;
归还*这个;
}
简单和子(整数x=5)
{this->data-=x;
归还*这个;
}
};
int main()
{简单obj;
obj.add().sub(4);//它是如何工作的以及为什么工作的/////////
std::cout当您的成员函数返回用*this
初始化的简单&
(*this
是简单
的实例)时,语义与您自己的“引用示例”相同;引用用该类型的实例初始化
您正在用对象本身初始化返回的引用
以下代码段在语义上是等效的:
obj.add ().sub (4);
当您的成员函数返回用*this
初始化的简单&
(*this
是简单
的实例)时,语义与您自己的“引用示例”相同;引用用该类型的实例初始化
您正在用对象本身初始化返回的引用
以下代码段在语义上是等效的:
obj.add ().sub (4);
当您的成员函数返回用*this
初始化的简单&
(*this
是简单
的实例)时,语义与您自己的“引用示例”相同;引用用该类型的实例初始化
您正在用对象本身初始化返回的引用
以下代码段在语义上是等效的:
obj.add ().sub (4);
当您的成员函数返回用*this
初始化的简单&
(*this
是简单
的实例)时,语义与您自己的“引用示例”相同;引用用该类型的实例初始化
您正在用对象本身初始化返回的引用
以下代码段在语义上是等效的:
obj.add ().sub (4);
obj.add()返回到sub()的是哪种数据
obj.add()
正在返回对obj
实例的引用
“返回sub()
”文本毫无意义
然而,在您的例子中,对对象的引用非常类似于指向对象的普通指针,并且通常是一个好的metapher
obj.add()返回到sub()的是哪种数据
obj.add()
正在返回对obj
实例的引用
“返回sub()
”文本毫无意义
然而,在您的例子中,对对象的引用非常类似于指向对象的普通指针,并且通常是一个好的metapher
obj.add()返回到sub()的是哪种数据
obj.add()
正在返回对obj
实例的引用
“返回sub()
”文本毫无意义
然而,在您的例子中,对对象的引用非常类似于指向对象的普通指针,并且通常是一个好的metapher
obj.add()返回到sub()的是哪种数据
obj.add()
正在返回对obj
实例的引用
“返回sub()
”文本毫无意义
但是,在您的情况下,对对象的引用与指向对象的普通指针非常相似,通常它是一个很好的metapher。它是对您称为添加的对象的引用。它与内置类型完全没有区别。它是对您称为添加的对象的引用。它与内置类型没有区别完全是pes。它是对您调用的add
对象的引用。它与内置类型没有任何区别。它是对您调用的add
对象的引用。它与内置类型没有任何区别。因此,从地址的角度讲,您试图说的是:obj.add();
返回同一地址的别名对象,该地址最初存储的是obj
。我做对了吗?@zibs.shirsh是的,这是描述发生了什么的一种方法。因此,从地址的角度讲,您想说的是:obj.add();
返回同一地址的别名对象,该地址最初存储的是obj
。我做对了吗?@zibs.shirsh是的,这是描述发生了什么的一种方法。因此,从地址的角度讲,您想说的是:obj.add();
返回同一地址的别名对象,该地址最初存储的是obj
。我做对了吗?@zibs.shirsh是的,这是描述发生了什么的一种方法。因此,从地址的角度讲,您想说的是:obj.add();
返回同一地址的别名对象,而obj
最初存储在该地址。是否正确?@zibs.shirsh是的,这是描述发生了什么的一种方法。