一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,在使用指针之前,对指针进行初始化。
在 C++ 中,指向类的指针指向一个类的对象,与普通的指针相似,指向类的指针可以用于访问对象的成员变量和成员函数。
声明和初始化指向类的指针
1 #include <iostream> 3 class MyClass { 4 public: 5 int data; 7 void display() { 8 std::cout << "Data: " << data << std::endl; 9 } 10 }; 12 int main() { 13 // 创建类对象 14 MyClass obj; 15 obj.data = 42; 17 // 声明和初始化指向类的指针 18 MyClass *ptr = &obj; 20 // 通过指针访问成员变量 21 std::cout << "Data via pointer: " << ptr->data << std::endl; 23 // 通过指针调用成员函数 24 ptr->display(); 26 return 0; 27 }
结果
Data via pointer: 42 Data: 42
动态分配内存
指向类的指针还可以用于动态分配内存,创建类的对象:
#include <iostream> class MyClass { public: int data; void display() { std::cout << "Data: " << data << std::endl; } }; int main() { // 动态分配内存创建类对象 MyClass *ptr = new MyClass; ptr->data = 42; // 通过指针调用成员函数 ptr->display(); // 释放动态分配的内存 delete ptr; return 0; }
结果
Data: 42
指向类的指针作为函数参数
指向类的指针可以作为函数参数传递:
1 #include <iostream> 2 class MyClass { 3 public: 4 int data; 5 void display() { 6 std::cout << "Data: " << data << std::endl; 7 } 8 }; 9 // 函数接受指向类的指针作为参数 10 void processObject(MyClass *ptr) { 11 ptr->display(); 12 } 13 int main() { 14 MyClass obj; 15 obj.data = 42; 16 // 将指向类的指针传递给函数 17 processObject(&obj); 18 return 0; 19 }
实例
1 #include <iostream> 2 using namespace std; 3 class Box 4 { 5 public: 6 // 构造函数定义 7 Box(double l=2.0, double b=2.0, double h=2.0) 8 { 9 cout <<"Constructor called." << endl; 10 length = l; 11 breadth = b; 12 height = h; 13 } 14 double Volume() 15 { 16 return length * breadth * height; 17 } 18 private: 19 double length; // Length of a box 20 double breadth; // Breadth of a box 21 double height; // Height of a box 22 }; 23 int main(void) 24 { 25 Box Box1(3.3, 1.2, 1.5); // Declare box1 26 Box Box2(8.5, 6.0, 2.0); // Declare box2 27 Box *ptrBox; // Declare pointer to a class. 28 // 保存第一个对象的地址 29 ptrBox = &Box1; 30 // 现在尝试使用成员访问运算符来访问成员 31 cout << "Volume of Box1: " << ptrBox->Volume() << endl; 32 // 保存第二个对象的地址 33 ptrBox = &Box2; 34 // 现在尝试使用成员访问运算符来访问成员 35 cout << "Volume of Box2: " << ptrBox->Volume() << endl; 36 return 0; 37 }
结果
Constructor called. Constructor called. Volume of Box1: 5.94 Volume of Box2: 102
标签:cout,指向,42,C++,data,display,指针 From: https://www.cnblogs.com/uacs2024/p/18048756