【深度剖析】C++的继承、构造函数与成员变量,还有这种类型限定你不可不知!
2024-01-08 20:50:01
C++ 作为一门强大的面向对象语言,它提供了一系列特性来帮助开发人员构建复杂而可维护的应用程序。其中,类和继承机制是 C++ 面向对象的重要基础。
类与继承
类是一个用来一类对象的蓝图,它定义了对象的属性和行为。一个类可以从另一个类继承属性和行为,这种特性被称为继承。继承可以帮助开发人员重用代码并创建新的类,而这些新类继承了父类的属性和行为。
在 C++ 中,使用 class
来定义一个类,例如:
class Person {
public:
string name;
int age;
Person(string name, int age) {
this->name = name;
this->age = age;
}
void greet() {
cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl;
}
};
这个类定义了 Person
的属性 name
和 age
,以及一个构造函数 Person()
和一个方法 greet()
。
构造函数
构造函数是一种特殊的成员函数,它在创建对象时被自动调用。构造函数用于初始化对象的属性,并为其设置默认值。在前面的例子中,构造函数 Person()
初始化了对象的 name
和 age
属性。
成员变量
成员变量是类定义的一部分,它定义了对象的属性。成员变量可以有不同的访问权限,包括 public
、protected
和 private
。public
成员变量可以被任何对象访问,protected
成员变量只能被派生类访问,private
成员变量只能被本类访问。
在前面的例子中,name
和 age
都是 public
成员变量,这意味着它们可以被任何对象访问。
类型限定
类型限定是指在变量或函数前加上类型名称,以限定变量或函数的类型。在 C++ 中,类型限定可以用来指定变量或函数的类型,也可以用来指定对象的类型。
例如:
class Person {
public:
string name;
int age;
Person(string name, int age) {
this->name = name;
this->age = age;
}
void greet() {
cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl;
}
};
int main() {
Person person("John", 25);
person.greet();
return 0;
}
在这个例子中,Person
类被限定为 class
,main()
函数被限定为 int
,person
对象被限定为 Person
。
可选属性
可选属性是指可以不赋初值的属性。在 C++ 中,可以使用 ?
来声明一个可选属性。例如:
class Person {
public:
string name;
int age?: 0; // 可选属性,默认值为 0
Person(string name, int age) {
this->name = name;
this->age = age;
}
void greet() {
cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl;
}
};
在这个例子中,age
属性被声明为可选属性,它有一个默认值为 0。这意味着如果在创建对象时不指定 age
的值,那么它的值将默认为 0。
结语
在本文中,我们深入剖析了 C++ 中的类、继承、构造函数、成员变量以及类型限定和可选属性。通过这些概念的学习和理解,你能更好理解面向对象程序设计并创建更复杂、更可维护的代码。