创建C++类,创建类中对象的引用
#include <iostream>
#include <string>
// 简化的植被功能类型(Pft)类
class Pft {
public:
std::string type;
Pft(const std::string& pftType) : type(pftType) {}
void displayInfo() {
std::cout << "Vegetation Type: " << type << std::endl;
}
};
int main() {
// 创建一个 Pft 类型的对象
Pft pineTree("Pine Tree");
// 创建 Pft 对象的引用
Pft& pftRef = pineTree;
// 使用引用访问对象的成员变量和方法
std::cout << "Type from reference: " << pftRef.type << std::endl;
// 调用对象的方法
pftRef.displayInfo();
return 0;
}
例子中,定义了一个简化的 Pft 类,其中包含了一个字符串类型的成员变量 type 和一个方法 displayInfo 用于显示植被类型的信息。
在 main 函数中,我们创建了一个 Pft 类型的对象 pineTree,然后通过 Pft& pftRef = pineTree; 创建了一个对 pineTree 的引用 pftRef。接下来,我们使用引用来访问对象的成员变量和调用对象的方法。
这个例子中,pftRef 就是 Pft 类型对象 pineTree 的引用,通过这个引用可以操作和访问 pineTree 对象的成员。
public:
std::string type;
public: 是访问控制的关键字,它指示下面声明的成员变量和函数在类的外部是可访问的。
在这个例子中,public: 表示紧接着的 std::string type; 声明是一个公共成员变量。std::string type; 定义了一个 Pft 类中的成员变量 type,它的类型是 std::string,即一个字符串类型的变量。
Pft(const std::string& pftType) : type(pftType) {}
这是一个C++中的构造函数的定义
1、Pft(const std::string& pftType): 这是构造函数的声明和定义部分。这个构造函数接受一个 std::string 类型的参数,该参数命名为 pftType。构造函数的作用是在创建类对象时执行一些初始化工作。
2、:: 这是成员初始化列表的开始标志。成员初始化列表允许你在进入构造函数体之前,对类的成员进行初始化。
3、type(pftType): 在成员初始化列表中,type 是类的成员变量,而 pftType 是构造函数的参数。这里的意思是,使用构造函数的参数 pftType 来初始化类的成员变量 type。
4、{}: 这是构造函数的主体,即实际的代码块,其中可以包含一些在对象创建时执行的额外操作。
5、所以,这个构造函数的作用是接受一个 std::string 类型的参数 pftType,并将它用于初始化 Pft 类的成员变量 type。这允许在创建 Pft 对象时,直接提供一个字符串参数,用于初始化对象的 type 成员变量。
std::cout << "Type from reference: " << pftRef.type << std::endl;
这行代码使用C++中的 std::cout 流来输出信息。
1、std::cout: 这是标准输出流对象,用于将信息输出到控制台。
2、<<: 这是C++中的输出流操作符,用于将信息插入到输出流中。
3、"Type from reference: ": 这是一个字符串常量,表示要输出的文本信息。
4、pftRef.type: 这部分使用了引用变量 pftRef 的成员变量 type。这假设 pftRef 是一个类的实例,而 type 是该类的成员变量,用于存储某种类型的信息。
5、<<: 输出流操作符再次用于将引用变量 pftRef 的成员变量 type 插入到输出流中。
6、std::endl: 这表示输出一个换行符,并刷新输出缓冲区。相当于输出一个新的空行。
7、整体来说,这行代码的作用是将一段文本 " Type from reference: " 后跟着引用变量 pftRef 的成员变量 type 的值输出到控制台,并在最后输出一个换行符。这通常用于在程序执行过程中输出调试信息或结果。
本例中创建了Pft这个类,并创建了Pft对象,接着创建了Pft对象的引用,用如下代码:
// 创建一个 Pft 类型的对象
Pft pineTree("Pine Tree");
// 创建 Pft 对象的引用
Pft& pftRef = pineTree;
pftRef 就是 Pft 类型对象 pineTree 的引用,通过这个引用可以操作和访问 pineTree 对象的成员。
举例2
// Obtain reference to grass object
grass& C3 = patch.C3;
1.grass&: 这部分声明一个引用变量,名为 C3,它的类型是 grass。引用变量是对已存在对象的别名,因此在这里,C3 将成为 grass 对象的别名。
2.patch.C3: 这假定 patch 是一个对象,其中有一个成员变量(或成员属性)名为 C3,并且这个成员变量是一个 grass 类型的对象。通过 patch.C3,我们访问了 patch 对象中的 C3 成员。
3.=: 这是赋值操作符,用于将 patch.C3 的值(即 grass 对象)赋给新声明的引用变量 C3。
综合起来,grass& C3 = patch.C3; 的作用是创建一个对 patch 对象中的 C3 成员的引用,这个引用被命名为 C3。通过这个引用,可以直接操作或修改 grass 对象,而不需要复制整个对象的内容。这在避免不必要的复制操作和提高程序性能方面是很有用的。