📅  最后修改于: 2023-12-03 14:59:48.130000             🧑  作者: Mango
在C++中,类是一种用户自定义的数据类型,用于封装数据和方法。对象是类的一个实例,可以使用类的方法来访问和操作对象的数据。
在本问题中,我们将学习C++类和对象的一些基本知识和用法。
我们可以使用class
关键字来定义一个类。类包含成员变量和成员函数(也称为方法)。例如:
class Person {
public:
string name;
int age;
void sayHello();
};
上面的代码定义了一个Person
类,其中包含了两个成员变量name
和age
,以及一个成员函数sayHello()
。
我们可以使用Person
类创建一个对象。例如:
Person p;
p.name = "Alice";
p.age = 20;
p.sayHello();
上面的代码创建了一个名为p
的Person
对象,并设置了name
和age
属性。然后调用了sayHello()
方法。
需要注意的是,当我们通过.
操作符访问对象的成员变量和成员函数时,要使用对象的名称加上.
和成员名。例如,p.name
表示p
对象的name
属性。
在定义类时,我们可以使用public
、private
和protected
关键字来指定成员变量和成员函数的访问权限。
public
:在类的内部和外部都可以访问。private
:只能在类的内部访问。protected
:只能在类的内部和其子类中访问。例如:
class Person {
public:
string name;
int age;
void sayHello();
private:
string secret;
protected:
void doSomething();
};
上面的代码中,name
、age
和sayHello()
方法是公共的,可以在类的外部访问。secret
是私有的,只能在类的内部使用。doSomething()
是受保护的,只能在类的内部和其子类中使用。
当我们创建一个对象时,会自动调用类的构造函数。构造函数用于初始化对象的成员变量。
如果我们在类中不定义构造函数,那么编译器会生成一个默认的构造函数。例如:
class Person {
public:
string name;
int age;
void sayHello();
};
Person p; // 调用默认的构造函数
在上面的代码中,Person
类没有定义自己的构造函数,因此编译器会生成一个默认的构造函数。当我们使用Person
类创建一个对象时,会自动调用这个默认的构造函数。
如果我们希望自定义一个构造函数,可以在类中定义一个形如类名(参数列表)
的函数。例如:
class Person {
public:
string name;
int age;
void sayHello();
Person(string n, int a) {
name = n;
age = a;
}
};
Person p("Alice", 20); // 调用自定义的构造函数
上面的代码定义了一个带有两个参数的构造函数。当我们使用Person
类创建一个对象时,会自动调用这个构造函数。
同样地,当对象被销毁时,会自动调用类的析构函数。析构函数用于清理对象的资源。例如:
class Person {
public:
string name;
int age;
void sayHello();
Person(string n, int a) {
name = n;
age = a;
cout << "构造函数被调用" << endl;
}
~Person() {
cout << "析构函数被调用" << endl;
}
};
{
Person p("Alice", 20);
} // 调用析构函数
上面的代码定义了一个带有析构函数的Person
类。当我们使用一个对象p
时,会自动调用构造函数,并输出构造函数被调用
。当p
对象被销毁时,会自动调用析构函数,并输出析构函数被调用
。
需要注意的是,如果我们不定义析构函数,编译器会生成一个默认的析构函数。
当我们定义一个类时,可以将其定义在头文件中,以便在多个文件中使用。例如:
// Person.h
#pragma once
#include <string>
using namespace std;
class Person {
public:
string name;
int age;
void sayHello();
Person(string n, int a);
~Person();
};
// Person.cpp
#include <iostream>
#include "Person.h"
using namespace std;
void Person::sayHello() {
cout << "Hello, my name is " << name << ", I'm " << age << " years old." << endl;
}
Person::Person(string n, int a) {
name = n;
age = a;
cout << "构造函数被调用" << endl;
}
Person::~Person() {
cout << "析构函数被调用" << endl;
}
上面的代码中,我们将Person
类的定义和实现分别定义在了Person.h
和Person.cpp
文件中。要使用Person
类,只需要在需要的文件中包含Person.h
头文件即可。
本问题介绍了C++类和对象的基本知识和用法,包括创建类和对象、访问控制修饰符、构造函数和析构函数,以及将类定义在头文件中。这些知识对于学习面向对象编程非常重要。