c#做的网站怎么上传,网站分类目录查询,全景网站开发多少钱,深圳联合办公空间在类中 在 C 中#xff0c;- 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别#xff1a;
1. 对于指针类型的对象#xff0c;必须使用 - 来访问其成员#xff1b;而对于非指针类型的对象#xff0c;则需要使用 . 。
2. - 运算符在实…在类中 在 C 中- 和 . 都可以用于访问类的成员变量和成员函数。但它们在使用上有一些区别
1. 对于指针类型的对象必须使用 - 来访问其成员而对于非指针类型的对象则需要使用 . 。
2. - 运算符在实际使用时会先对指针进行解引用操作 (*p)然后再访问指针所指向对象的成员而点运算符则是直接访问对象的成员。 例如假设有一个名为 p 的指向某个对象的指针该对象拥有一个名为 memVar 的成员变量和一个名为 memFunc 的成员函数那么访问这些成员的方式如下
p-memVar; // 访问 p 所指向对象的 memVar 成员变量
p-memFunc(); // 访问 p 所指向对象的 memFunc 成员函数(*p).memVar; // 与上面等效
(*p).memFunc(); // 与上面等效obj.memVar; // obj 是某个类的对象访问该对象的 memVar 成员变量
obj.memFunc(); // 访问 obj 对象的 memFunc 成员函数 需要注意的是在使用 - 访问成员时其左侧应当是一个指向对象的指针。否则会导致编译错误。
示例
#includeiostream
class Myclass {
public:int number 2;
};int main() {Myclass a;std::cout a.number a.number std::endl;Myclass* b a;std::cout (*b).number (*b).number std::endl;std::cout b-number b-number std::endl;
}
输出结果
a.number 2 (*b).number 2 b-number 2
分析 这段代码创建了一个名为 Myclass 的类其中包含一个公有成员变量 number其 number 成员变量的值设置为 2。在 main 函数中首先创建了一个 Myclass 类的实例 a通过a.number访问number成员变量。然后创建了一个指向 a 的指针 b使用 (*b).number 和 b-number 分别访问了 number 成员变量并进行打印输出。
在结构体中 在 C 中结构体和类的使用方式是相似的。对于结构体也可以使用 - 和 . 来访问其成员变量和成员函数但它们的区别与前面提到的指针和非指针类型的对象的区别是一样的。 当使用指向结构体的指针时需要使用 - 运算符来访问成员而对于结构体的实例非指针类型则需要使用 . 运算符。 例如假设有一个名为 p 的指向结构体的指针该结构体拥有一个成员变量 memVar 和一个成员函数 memFunc那么访问这些成员的方式如下
p-memVar; // 访问 p 所指向结构体的 memVar 成员变量
p-memFunc(); // 访问 p 所指向结构体的 memFunc 成员函数(*p).memVar; // 与上面等效
(*p).memFunc(); // 与上面等效obj.memVar; // obj 是某个结构体的实例访问该实例的 memVar 成员变量
obj.memFunc(); // 访问 obj 实例的 memFunc 成员函数 需要注意的是使用 - 访问结构体成员时左侧需要是一个指向结构体的指针。如果左侧不是指针类型或者是空指针将导致编译错误。而使用 . 访问结构体成员时左侧应当是一个结构体的实例。
示例
#includeiostream
struct people{int number 10;char str h;
};int main() {people a; // 创建结构体实例std::cout a.number a.number std::endl;std::cout a.str a.str std::endl;people* b a; // 创建指向该实例的指针该指针指向结构体实例a// std::cout b.number std::endl; // 编译报错// std::cout b.str std::endl; // 编译报错std::cout b-number b-number std::endl;std::cout b-str b-str std::endl;std::cout (*b).number (*b).number std::endl;std::cout (*b).str (*b).str std::endl;}
输出结果 在上面的代码中a是一个结构体实例通过a.number、a.str我们可以访问结构体实例a中的number、str成员变量。 b 是一个指向 people 类型的指针它指向名为 a 的结构体实例。通过 (*b).number、b-number; (*b).str、b-str我们可以访问结构体实例中名为 number、str的成员变量。