c++编写程序要包括类、对象、构造函数、析构函数、静态变量、静态成员函数、对象数组、对象指针、对象引用、友元函数、友元类
时间: 2023-10-11 14:04:59 浏览: 118
好的,我可以为您简单介绍一下这些概念。
1. 类:C++中类是一种自定义数据类型,可以封装数据和函数。类的定义包括类名、数据成员、成员函数等。
2. 对象:类的实例化对象,可以调用类中定义的成员函数和访问数据成员。
3. 构造函数:在对象创建时自动调用,用于初始化对象的数据成员。
4. 析构函数:在对象销毁时自动调用,用于释放对象占用的资源。
5. 静态变量:静态变量在程序运行期间只被初始化一次,不随对象的创建而改变。
6. 静态成员函数:属于类而非对象的函数,可以访问静态变量但不能访问非静态变量。
7. 对象数组:可以定义一个存储多个对象的数组。
8. 对象指针:指向对象的指针,可以调用对象的成员函数和访问数据成员。
9. 对象引用:对象的别名,可以调用对象的成员函数和访问数据成员。
10. 友元函数:可以访问类的私有成员,但不是类的成员函数。
11. 友元类:可以访问类的私有成员,是另一个类的成员函数。
希望这些概念可以帮助您更好地理解C++中的面向对象编程。
相关问题
c++编写一个程序,程序要包括类、对象、构造函数、析构函数、静态变量、静态成员函数、对象数组、对象指针、对象引用、友元函数、友元类
下面是一个使用 C++ 编写的程序,其中包括了类、对象、构造函数、析构函数、静态变量、静态成员函数、对象数组、对象指针、对象引用、友元函数、友元类的使用:
```c++
#include <iostream>
using namespace std;
class Person{
private:
static int count; // 静态变量
int age;
public:
Person(int age){ // 构造函数
this->age = age;
count++;
}
~Person(){ // 析构函数
count--;
}
static int getCount(){ // 静态成员函数
return count;
}
friend void printAge(Person p); // 友元函数
friend class Student; // 友元类
};
int Person::count = 0;
void printAge(Person p){
cout << "Age: " << p.age << endl;
}
class Student{
public:
void printAgeOfPerson(Person p){
cout << "Age: " << p.age << endl;
}
};
int main(){
Person p1(18);
Person p2(20);
cout << "Count: " << Person::getCount() << endl; // 静态成员函数的使用
printAge(p1); // 友元函数的使用
Student s;
s.printAgeOfPerson(p2); // 友元类的使用
Person arr[3] = {Person(21), Person(22), Person(23)}; // 对象数组的使用
for(int i = 0; i < 3; i++){
cout << "Age of person " << i+1 << ": " << arr[i].age << endl;
}
Person* p3 = new Person(24); // 对象指针的使用
cout << "Age of person p3: " << p3->age << endl;
delete p3;
Person& p4 = p2; // 对象引用的使用
cout << "Age of person p4: " << p4.age << endl;
return 0;
}
```
在上面的程序中,我们定义了一个 `Person` 类,其中包括了静态变量 `count`、构造函数、析构函数、静态成员函数 `getCount()`,以及一个友元函数 `printAge()` 和一个友元类 `Student`。
在 `main()` 函数中,我们首先创建了两个 `Person` 对象 `p1` 和 `p2`,并使用静态成员函数 `Person::getCount()` 输出了当前 `Person` 对象的数量。
然后,我们使用了友元函数 `printAge()` 和友元类 `Student` 分别输出了 `p1` 和 `p2` 对象的年龄。
接着,我们定义了一个 `Person` 对象数组 `arr`,并对其进行了初始化,并使用了一个 `for` 循环遍历数组并输出了每个 `Person` 对象的年龄。
然后,我们创建了一个 `Person` 对象指针 `p3`,并使用 `new` 运算符动态分配了内存,并输出了 `p3` 对象的年龄,并使用 `delete` 运算符释放了 `p3` 对象的内存。
最后,我们定义了一个 `Person` 对象引用 `p4`,并将其初始化为 `p2`,并输出了 `p4` 对象的年龄。
输出结果如下:
```
Count: 2
Age: 18
Age: 20
Age: 21
Age: 22
Age: 23
Age of person p3: 24
Age of person p4: 20
```
编写一个C++程序,展示如何使用类、对象、构造函数、析构函数、静态变量、静态成员函数、对象数组、对象指针、对象引用、友元函数、友元类等语法元素。
好的,以下是一个示例程序:
```cpp
#include <iostream>
using namespace std;
class MyClass {
private:
int x;
static int count;
public:
MyClass(int val) {
x = val;
count++;
cout << "MyClass object created. Count: " << count << endl;
}
~MyClass() {
count--;
cout << "MyClass object destroyed. Count: " << count << endl;
}
void display() {
cout << "x = " << x << endl;
}
static void displayCount() {
cout << "Total number of MyClass objects: " << count << endl;
}
friend void friendFunc(MyClass obj);
friend class FriendClass;
};
int MyClass::count = 0;
void friendFunc(MyClass obj) {
cout << "Friend function called. x = " << obj.x << endl;
}
class FriendClass {
public:
void accessPrivate(MyClass obj) {
cout << "Friend class function called. x = " << obj.x << endl;
}
};
int main() {
MyClass obj1(10);
MyClass obj2(20);
MyClass::displayCount();
obj1.display();
obj2.display();
MyClass* ptr = &obj1;
ptr->display();
MyClass& ref = obj2;
ref.display();
MyClass arr[3] = {MyClass(30), MyClass(40), MyClass(50)};
for (int i = 0; i < 3; i++) {
arr[i].display();
}
friendFunc(obj2);
FriendClass fc;
fc.accessPrivate(obj1);
return 0;
}
```
解释一下程序中的语法元素:
- 类:`MyClass` 是一个类,包含了构造函数、析构函数、成员函数、静态成员变量和友元函数/类。
- 对象:`obj1` 和 `obj2` 是 `MyClass` 类型的对象。
- 构造函数/析构函数:`MyClass` 类的构造函数和析构函数分别用于对象的创建和销毁。在示例程序中,构造函数用于初始化成员变量和增加 `count` 计数器的值,析构函数用于减少 `count` 计数器的值。
- 静态变量/静态成员函数:`count` 是一个静态成员变量,用于记录 `MyClass` 类型对象的数量。`displayCount` 是一个静态成员函数,用于显示 `count` 的值。
- 对象数组:`arr` 是一个 `MyClass` 类型的对象数组,包含 3 个元素。使用循环遍历数组中的每个元素并调用 `display` 函数显示元素的 `x` 值。
- 对象指针:`ptr` 是一个指向 `obj1` 的指针,使用箭头运算符调用 `display` 函数。
- 对象引用:`ref` 是 `obj2` 的引用,使用点运算符调用 `display` 函数。
- 友元函数/类:`friendFunc` 是一个友元函数,可以访问 `MyClass` 类的私有成员。`FriendClass` 是一个友元类,可以访问 `MyClass` 类的私有成员。在示例程序中,`friendFunc` 和 `FriendClass` 都可以访问 `MyClass` 类的 `x` 成员。
阅读全文