匿名类是没有名称的类。 C++支持此功能。
- 这些类不能具有构造函数,但可以具有析构函数。
- 这些类既不能作为参数传递给函数,也不能用作函数的返回值。
举例说明匿名类
- 创建匿名类的单个对象:在第一个示例中,创建的匿名类的对象名为obj1。 obj1的范围遍及整个程序。因此,我们可以将其访问到main函数。通常,使用obj1,将对匿名类的成员函数进行调用。
// CPP program to illustrate // concept of Anonymous Class #include
using namespace std; // Anonymous Class : Class is not having any name class { // data member int i; public: void setData(int i) { // this pointer is used to differentiate // between data member and formal argument. this->i = i; } void print() { cout << "Value for i : " << this->i << endl; } } obj1; // object for anonymous class // Driver function int main() { obj1.setData(10); obj1.print(); return 0; } 输出 :
Value for i : 10
- 创建两个匿名类的对象:在第二个示例中,我们为匿名类创建了两个对象obj1和obj2,并调用了该类的成员函数。 obj1和obj2的范围贯穿整个程序。同样,我们可以为一个匿名类创建多个对象。
// CPP program to illustrate // concept of Anonymous Class #include
using namespace std; // Anonymous Class : Class is not having any name class { // data member int i; public: void setData(int i) { // this pointer is used to differentiate // between data member and formal argument. this->i = i; } void print() { cout << "Value for i : " << this->i << endl; } } obj1, obj2; // multiple objects for anonymous class // Driver function int main() { obj1.setData(10); obj1.print(); obj2.setData(20); obj2.print(); return 0; } 输出 :
Value for i : 10 Value for i : 20
- 限制匿名类的范围:要限制匿名类的对象的范围,我们可以使用typedef的帮助。在第三个示例中,通过使用typedef,我们可以为类提供一个方便的名称,并使用该名称为匿名类创建多个对象obje1和obj2。在这里,我们可以控制obj1和obj2对象的范围,这些对象位于main函数。
// CPP program to illustrate // concept of Anonymous Class // by scope restriction #include
using namespace std; // Anonymous Class : Class is not having any name typedef class { // data member int i; public: void setData(int i) { // this pointer is used to differentiate // between data member and formal argument. this->i = i; } void print() { cout << "Value for i :" << this->i << endl; } } myClass; // using typedef give a proper name // Driver function int main() { // multiple objects myClass obj1, obj2; obj1.setData(10); obj1.print(); obj2.setData(20); obj2.print(); return 0; } 输出 :
Value for i : 10 Value for i : 20
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。