C++学习笔记之类与对象详解
1. 类与对象
在C++语言中,类是一种用户自定义的数据类型,它允许将数据和行为封装成一个对象,从而实现了面向对象的编程思想。而对象,则是类的具体化实例化。
1.1 类的定义
类的定义包含两个部分:类声明和类实现。
1.1.1 类的声明
类的声明通常在头文件中完成,它包含了类名、数据成员和成员函数的声明。
// 声明一个名为Person的类
class Person {
public:
// 声明构造函数和成员函数
Person(string name, int age);
void sayHi();
private:
// 声明数据成员
string m_name;
int m_age;
};
其中,public
、private
、protected
是用来修饰数据成员及成员函数在外部的可见性和访问权限。
1.1.2 类的实现
类的实现包含类成员函数的实现部分。通常在 .cpp
文件中实现成员函数,并在每个函数前添加类名和作用域解析符::
。
// 在 .cpp 文件中实现类的成员函数
Person::Person(string name, int age) {
m_name = name;
m_age = age;
}
void Person::sayHi() {
cout << "Hi, my name is " << m_name << ", I'm " << m_age << " years old." << endl;
}
1.2 对象的创建和使用
在类的定义完成后,我们可以通过创建对象的方式来使用类。在C++中,可以使用 new
关键字创建动态对象;或使用栈来创建一个局部变量的对象。
// 创建对象
Person person("Tom", 20); // 在栈上创建对象
Person* pp = new Person("Bob", 25); // 在堆上创建对象
// 使用对象调用成员函数
person.sayHi();
pp->sayHi();
// 释放动态创建的对象
delete pp;
2. 类的成员
类的成员包括数据成员和成员函数。
2.1 数据成员
数据成员是指在类中定义的变量。它们通常被私有化,在类的内部使用,并通过类的公有成员函数来访问。
class Person {
public:
// 声明构造函数和成员函数
Person(string name, int age);
void sayHi() const; // 使用const关键字确保函数不会修改类的数据成员
void setName(string name);
void setAge(int age);
private:
// 声明数据成员
string m_name;
int m_age;
};
// 在 .cpp 文件实现成员函数
void Person::setName(string name) {
m_name = name;
}
void Person::setAge(int age) {
m_age = age;
}
void Person::sayHi() const {
cout << "Hi, my name is " << m_name << ", I'm " << m_age << " years old." << endl;
}
2.2 成员函数
成员函数是指在类中定义的函数,它们可以访问类中的数据成员,以及其它成员函数。
class Person {
public:
// 声明构造函数和成员函数
Person(string name, int age);
void sayHi() const; // 使用const关键字确保函数不会修改类的数据成员
void setName(string name);
void setAge(int age);
private:
// 声明数据成员
string m_name;
int m_age;
};
// 在 .cpp 文件实现成员函数
void Person::setName(string name) {
m_name = name;
}
void Person::setAge(int age) {
m_age = age;
}
void Person::sayHi() const {
cout << "Hi, my name is " << m_name << ", I'm " << m_age << " years old." << endl;
}
示例说明
示例1:创建对象并调用成员函数
#include <iostream>
using namespace std;
class Person {
public:
// 声明构造函数和成员函数
Person(string name, int age);
void sayHi() const; // 使用const关键字确保函数不会修改类的数据成员
void setName(string name);
void setAge(int age);
private:
// 声明数据成员
string m_name;
int m_age;
};
// 实现构造函数
Person::Person(string name, int age) {
m_name = name;
m_age = age;
}
// 实现成员函数
void Person::setName(string name) {
m_name = name;
}
void Person::setAge(int age) {
m_age = age;
}
void Person::sayHi() const {
cout << "Hi, my name is " << m_name << ", I'm " << m_age << " years old." << endl;
}
int main() {
// 创建对象并调用成员函数
Person person("Tom", 20);
person.sayHi();
person.setName("Jack");
person.setAge(25);
person.sayHi();
return 0;
}
输出结果:
Hi, my name is Tom, I'm 20 years old.
Hi, my name is Jack, I'm 25 years old.
示例2:动态创建对象并调用成员函数
#include <iostream>
using namespace std;
class Person {
public:
// 声明构造函数和成员函数
Person(string name, int age);
void sayHi() const; // 使用const关键字确保函数不会修改类的数据成员
void setName(string name);
void setAge(int age);
private:
// 声明数据成员
string m_name;
int m_age;
};
// 实现构造函数
Person::Person(string name, int age) {
m_name = name;
m_age = age;
}
// 实现成员函数
void Person::setName(string name) {
m_name = name;
}
void Person::setAge(int age) {
m_age = age;
}
void Person::sayHi() const {
cout << "Hi, my name is " << m_name << ", I'm " << m_age << " years old." << endl;
}
int main() {
// 创建动态对象并调用成员函数
Person* pp = new Person("Bob", 25);
pp->sayHi();
pp->setName("Alice");
pp->setAge(30);
pp->sayHi();
// 释放动态对象
delete pp;
return 0;
}
输出结果:
Hi, my name is Bob, I'm 25 years old.
Hi, my name is Alice, I'm 30 years old.
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++学习笔记之类与对象详解 - Python技术站