C++静态数据成员和静态成员函数以及new和delete以及指向对象的指针
时间: 2024-05-17 07:13:04 浏览: 16
静态数据成员是指在类中声明的静态变量,它们不属于类对象,而是属于整个类,所有类对象共享同一个静态数据成员。静态成员函数是指在类中声明的静态函数,它们不属于任何一个类对象,而是属于整个类,可以直接通过类名调用。
new和delete是C++中用于动态分配和释放内存的关键字。new用于在堆上分配内存,并返回指向该内存的指针,而delete用于释放堆上分配的内存。需要注意的是,使用new分配的内存必须使用delete释放,否则会导致内存泄漏。
指向对象的指针是指一个指针变量,它存储的是对象在内存中的地址。可以通过指针访问对象的成员变量和成员函数。需要注意的是,当使用指针访问对象的成员时,需要使用箭头运算符->,而不是点运算符.。
相关问题
C++静态数据成员和静态成员函数以及new和delete以及指向对象的指针并举例
好的,下面我会分别举例说明。
静态数据成员的例子:
```C++
class MyClass {
public:
static int count; // 静态数据成员
MyClass() { count++; } // 每次创建对象时 count 自增
};
int MyClass::count = 0; // 静态数据成员的初始化
int main() {
MyClass obj1, obj2;
cout << MyClass::count << endl; // 输出 2,因为创建了两个 MyClass 的对象
return 0;
}
```
静态成员函数的例子:
```C++
class MyClass {
public:
static void print(int x) { cout << "x = " << x << endl; } // 静态成员函数
};
int main() {
MyClass::print(10); // 直接通过类名调用静态成员函数
return 0;
}
```
new和delete的例子:
```C++
int main() {
int *ptr = new int; // 动态分配一个 int 类型的内存空间
*ptr = 10; // 对该内存空间进行赋值
cout << *ptr << endl; // 输出 10
delete ptr; // 释放内存空间
return 0;
}
```
指向对象的指针的例子:
```C++
class MyClass {
public:
void print() { cout << "Hello" << endl; }
};
int main() {
MyClass obj;
MyClass *ptr = &obj; // 定义指向 MyClass 对象的指针
ptr->print(); // 通过指针调用 MyClass 对象的 print() 函数
return 0;
}
```
c++静态string指针
静态string指针是指在C++中使用静态存储区域创建的指向string对象的指针。静态存储区域是在程序运行期间分配的固定内存区域,它的生命周期从程序开始到程序结束。静态string指针可以通过使用string类的构造函数来初始化。
以下是一个示例代码,演示了如何创建和使用静态string指针:
```cpp
#include <iostream>
#include <string>
int main() {
static std::string* staticStringPtr = new std::string("Hello, World!");
std::cout << *staticStringPtr << std::endl;
delete staticStringPtr;
return 0;
}
```
在上面的代码中,我们使用`new`关键字在静态存储区域创建了一个指向string对象的指针`staticStringPtr`。然后,我们通过解引用该指针来访问和输出string对象的内容。最后,我们使用`delete`关键字释放了该指针所指向的内存空间。