📜  C ++ |类和对象|问题4(1)

📅  最后修改于: 2023-12-03 14:39:38.641000             🧑  作者: Mango

C++ | 类和对象 | 问题4

在使用C++进行面向对象编程时,我们经常需要使用类和对象。问题4涉及到类和对象中常见的一些概念和操作。以下是解决问题4的一些关键点:

类的构造函数和析构函数

在C++中,构造函数用于初始化对象的成员变量,而析构函数则用于销毁对象并释放所占用的内存。

以下是一个简单的类,其中包括构造函数和析构函数:

class MyClass {
public:
    MyClass();   //构造函数
    ~MyClass();  //析构函数
private:
    int x;
};
 
MyClass::MyClass() : x(0) {
    cout << "Constructor is called!" << endl;
}
 
MyClass::~MyClass() {
    cout << "Destructor is called!" << endl;
}

在创建一个MyClass对象时,构造函数会自动调用,输出“Constructor is called!”。反之,当对象被销毁时,析构函数会自动调用,输出“Destructor is called!”。

访问控制——私有成员与公有成员

C++中的成员变量和函数可以被声明为公有的、私有的或受保护的。公有成员可以被类外的代码访问,而私有成员则只能被类内部的代码访问。

以下是一个简单的类,其中包括公有成员变量和函数、私有成员变量和函数:

class MyClass {
public:
    void setX(int);  //公有成员函数
    int getX();      //公有成员函数
private:
    int x;           //私有成员变量
    void printX();   //私有成员函数
};
 
void MyClass::setX(int n) {
    x = n;
}
 
int MyClass::getX() {
    return x;
}
 
void MyClass::printX() {
    cout << "The value of x is: " << x << endl;
}

在上面的例子中,setX()和getX()函数是公有成员函数,可以被类外部的代码调用。而printX()则是一个私有成员函数,只能在类内部被调用。

友元函数

C++中的友元函数是定义在类外部但具有访问类私有成员变量和成员函数的权限。友元函数的声明和定义都需要在类的外部进行。

以下是一个简单的类,其中包括一个友元函数:

class MyClass {
private:
    int x;
public:
    void setX(int n) {
        x = n;
    }
    friend void printX(MyClass obj);  //声明友元函数printX()
};
 
void printX(MyClass obj) {
    cout << "The value of x is: " << obj.x << endl;  //可以访问类的私有成员变量x
}

在上面的例子中,printX()是一个友元函数,可以访问MyClass类的私有成员变量x。

定义对象数组

在C++中,可以定义对象数组,来创建多个对象并分配给它们不同的索引号。

以下是一个简单的类,包括构造函数和析构函数,以及一个打印函数:

class MyClass {
public:
    MyClass();               //构造函数
    ~MyClass();              //析构函数
    void printMessage();     //打印函数
private:
    string message;
};
 
MyClass::MyClass() {
    cout << "Constructor is called!" << endl;
}
 
MyClass::~MyClass() {
    cout << "Destructor is called!" << endl;
}
 
void MyClass::printMessage() {
    cout << message << endl;
}

使用以下代码,可以创建并初始化对象数组,并依次调用它们的printMessage()函数:

int main() {
    MyClass objArr[3];
    objArr[0] = MyClass();
    objArr[1] = MyClass();
    objArr[2] = MyClass();
 
    for (int i = 0; i < 3; i++) {
        objArr[i].printMessage();
    }
 
    return 0;
}

输出结果为:

Constructor is called! Constructor is called! Constructor is called! Constructor is called! Constructor is called! Constructor is called! constructor is called! constructor is called! constructor is called!

总结

在面向对象编程中,了解类和对象的基本概念和操作是至关重要的。本文介绍了构造函数、析构函数、访问控制、友元函数以及定义对象数组等知识点,并通过简单的代码示例进行了讲解。我们可以根据这些知识点的特点和用法,灵活运用到实际的编程中去。