C++中类成员的访问控制权限有三种:private、protected和public。
- private: 私有成员只能在类内部访问,无法从类外部直接访问。这种访问权限用于封装类的实现细节,提供更好的数据隐藏和安全性。
- protected: 受保护的成员可以在类内部和派生类中访问,但不能从类外部直接访问。这种访问权限常用于实现继承和派生类的访问控制。
- public: 公有成员可以在类内部、派生类和类的对象中进行访问。这种访问权限用于公开类的接口,使得外部代码可以直接访问和使用类的成员。
构造函数(Constructor)是一种特殊的成员函数,与类名相同且没有返回类型。它在创建对象时自动调用,用于初始化对象的数据成员。构造函数的作用是确保对象被正确地初始化。
析构函数(Destructor)也是一种特殊的成员函数,与类名相同但前面加上波浪号(~)。它在对象被销毁时自动调用,用于释放对象占用的资源。析构函数的作用是确保对象使用完毕后进行资源的清理工作。
构造函数和析构函数的要求如下:
- 构造函数没有返回类型,包括拷贝构造函数。析构函数也没有返回类型。
- 构造函数可以有多个重载形式,根据参数的不同进行区分。析构函数只能有一个,不能重载。
- 构造函数在对象创建时自动调用,析构函数在对象销毁时自动调用,无需手动调用。
- 构造函数可以有默认参数,析构函数不能有任何参数。
- 构造函数可以被继承,析构函数也会被继承。
在C++中,函数的参数传递方式有三种:传值(by value)、引用传递(by reference)和指针传递(by pointer)。
- 传值:将实参的值复制给形参,在函数内部对形参的修改不会影响实参的值。
- 引用传递:通过使用引用作为函数的参数,可以直接访问实参的值,对形参的修改会改变实参的值。
- 指针传递:通过传递指向实参的指针,可以在函数内部通过指针访问和修改实参的值。
这三种方式各有不同的应用场景。传值适用于简单的数据类型或需要保护实参的情况。引用传递适用于需要修改实参的值或减少内存开销的情况。指针传递适用于需要在函数内部对实参进行动态内存操作或需要传递数组等情况。
需要注意的是,在传递大型对象时,传值会导致数据的复制,引起性能问题,此时应使用引用传递或指针传递。