C++如何定义和使用一个类(Class)?(构造函数示例)
发布时间 - 2025-12-29 00:00:00 点击率:次C++中类由class关键字定义,含私有数据成员和公有成员函数,构造函数名与类名相同、无返回类型,用成员初始化列表高效初始化;可重载、委托或设默认参数。
在C++中定义一个类,就是用 class 关键字声明一组相关数据(成员变量)和操作这些数据的函数(成员函数),其中构造函数用于初始化对象。
定义类的基本结构
类通常包含私有(private)数据成员和公有(public)成员函数。例如定义一个表示学生的类:
class Student {
private:
std::string name;
int age;
public:
Student(); // 默认构造函数
Student(std::string n, int a); // 带参构造函数
void display() const;
};
实现构造函数
构造函数名必须与类名完全相同,没有返回类型(连 void 也不能写)。它在创建对象时自动调用:
Student::Student() : name("Unknown"), age(0) {}
Student::Student(std::string n, int a) : name(n), age(a) {}
- 使用成员初始化列表(冒号后部分)比在函数体内赋值更高效,尤其对自定义类型
- 如果没定义任何构造函数,编译器会提供默认构造函数;但一旦定义了,就不会再自动生成默认版本
- 可以重载多个构造函数,只要参数列表不同
创建和使用对象
定义类之后,就可以用它创建对象,并调用成员函数:
int main() {
Student s1; // 调用默认构造函数
Student s2("Alice", 20); // 调用带参构造函数
s2.display();
return 0;
}
- 对象在栈上创建时,构造函数立即执行
- 若通过 new 动态分配(如 Student* p = new Student("Bob", 22);),构造函数也在内存分配后立刻调用
- 成员函数需声明为 const(如 display() const)才能被 const 对象调用
补充:默认参数与委托构造(C++11起)
可简化构造函数数量:
Student::Student(std::string n = "Unknown", int a = 0) : name(n), age(a) {}
或用委托构造避免重复代码:
Student::Student() : Student("Unknown", 0) {}
Student::Student(std::string n, int a) : name(n), age(a) {}
- 委托构造中,冒号后只能调用本类的另一个构造函数,且不能同时使用成员初始化列表
- 被委托的构造函数先执行,再继续当前构造函数的函数体(如果有)
# 栈
# ai
# c++
# String
# 成员变量
# 成员函数
# 构造函数
# const
# int
# void
# class
# public
# private
# 委托
# 对象
# display
# 多个
# 就不
# 也在
# 本类
# 自定义
# 它在
# 会再
# 用它
# 自动生成
# 或用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何创建自定义Facades?(详细步骤)
C语言设计一个闪闪的圣诞树
制作电商网页,电商供应链怎么做?
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
音响网站制作视频教程,隆霸音响官方网站?
Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
JS实现鼠标移上去显示图片或微信二维码
谷歌Google入口永久地址_Google搜索引擎官网首页永久入口
Python并发异常传播_错误处理解析【教程】
Python图片处理进阶教程_Pillow滤镜与图像增强
Laravel如何处理CORS跨域请求?(配置示例)
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
如何用好域名打造高点击率的自主建站?
网易LOFTER官网链接 老福特网页版登录地址
如何用低价快速搭建高质量网站?
Laravel如何使用Scope本地作用域_Laravel模型常用查询逻辑封装技巧【手册】
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
简单实现Android文件上传
zabbix利用python脚本发送报警邮件的方法
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
如何选择可靠的免备案建站服务器?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Windows Hello人脸识别突然无法使用
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何快速生成橙子建站落地页链接?
Firefox Developer Edition开发者版本入口
北京网站制作的公司有哪些,北京白云观官方网站?
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel中的Facade(门面)到底是什么原理
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Thinkphp 中 distinct 的用法解析
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
php打包exe后无法访问网络共享_共享权限设置方法【教程】
如何快速查询网址的建站时间与历史轨迹?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
高防服务器如何保障网站安全无虞?
JS中对数组元素进行增删改移的方法总结
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
如何在建站宝盒中设置产品搜索功能?
如何快速查询网站的真实建站时间?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
如何在自有机房高效搭建专业网站?
Bootstrap CSS布局之列表
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法


据成员和公有成员函数,构造函数名与类名相同、无返回类型,用成员初始化列表高效初始化;可重载、委托或设默认参数。