文章目录
- 类的定义
- 类定义案例
- 构造函数
类的定义
C++ 在 C 语言的基础上增加面向对象编程,类是用于指定对象的形式,是一种用户自定义的数据类型,封装了数据和函数。类可以被看作是一种模板,可以用来创建具有相同属性和行为的多个对象。
- class 关键字定义类,相当于在结构体中加入方法;
-
- 花括号内定义成员变量、成员方法,并且分块表示,每块使用public/private/protected关键字修饰
- 最后以分号结束
- 访问修饰符
- public,公有访问,最大的访问权限,对象可以直接调用属性、方法;
- protected,受保护的访问,只能在类内部访问,对象无法调用;可以被子类继承,并在子类内部访问;
- private, 私有访问,只能在类内部访问,对象无法调用;可以被子类继承,但子类内部也无法访问
- 使用冒号表示继承;
- class Dog : public Animal { }; 公有继承,访问权限不变;
- class Dog : protected Animal { }; 受保护的继承,public 访问模块变成 protected
- class Dog : private Animal { }; 私有继承,继承下来的全部为私有访问权限;
类定义案例
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
// 类的声明 一般在头文件
class Stu {
public: // 公有权限 接口
const string& getName() const { // const 表示常量成员函数 (只读,不会改变实例对象的任何数据)
return name; // this指针指向当前实例对象,可以省略 this->name;
// 返回name的常量引用,避免值拷贝的内存消耗
}
void setName(const string& name) {
// 直接访问当前对象 的属性
this->name = name;
}
private: // 数据放在 私有访问 块
string name;
};
int main() {
// 创建对象
Stu stu;
// 设置名字
stu.setName("jack");
string name = stu.getName();
cout << "got name:" << name << endl;
return 0;
}
构造函数
- 创建对象时,对其初始化
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
// 类的声明 一般在头文件
class Stu {
public: // 公有权限 接口
Stu() { // 无参构造函数,无返回值
cout << "创建对象时,初始化对象" << endl;
};
// 重载构造函数(参数列表不同)
Stu(const string& name) {
this->name = name;
}
const string& getName() const { // const 表示常量成员函数 (只读,不会改变实例对象的任何数据)
return name; // this指针指向当前实例对象,可以省略 this->name;
// 返回name的常量引用,避免值拷贝的内存消耗
}
void setName(const string& name) {
// 直接访问当前对象 的属性
this->name = name;
}
private: // 数据放在 私有访问 块
string name;
};
int main() {
// 创建对象
Stu stu("lauf");
string name = stu.getName();
cout << "got name:" << name << endl;
return 0;
}