
C++之类的成员函数和构造函数
发布日期:2021-05-14 16:35:22
浏览次数:16
分类:精选文章
本文共 2883 字,大约阅读时间需要 9 分钟。
C++类成员函数与构造函数详解
在C++编程中,类的成员函数与构造函数是核心概念,掌握它们是开发高质量C++程序的基础。以下将从这两个方面展开详细讲解。
一、类的成员函数
1.1 函数声明
在类中定义成员函数的基本方式是用public
、protected
或private
修饰。函数的声明格式如下:
class 类名 { 修饰符1: 变量1类型 变量1名称; 变量2类型 变量2名称; ... 国家建: 函数1返回类型 函数1名称(); ... 函数N返回类型 函数N名称();}
例如:
class People { public: string name; long score; public: void PlayGameScore();}
1.2 函数定义
函数定义时需要用到class名::函数名{...}
的语法结构。定义时需要包含函数的具体实现逻辑。例如:
void People::PlayGameScore() { cout << score << endl;}
二、构造函数
2.1 构造函数的特点
- 构造函数的名称必须与类名相同。
- 构造函数没有返回类型声明。
2.2 构造函数的作用
- 初始化对象的数据成员。
- 对于类对象的创建,编译器负责为对象分配内存空间并自动调用构造函数,从而完成成员变量的初始化。
2.3 构造函数的种类
-
无参构造:没有接受参数的构造函数。
- 若类中未定义任何构造函数,系统会自动生成默认的无参构造函数。
-
一般构造函数(重载构造):接受多个参数的构造函数。
- 需要根据具体需求重载不同的构造函数。
-
拷贝构造函数:接受一个类对象的拷贝,完成对象的深拷贝。
- 通常用于对象的深复制操作。
2.4 注意事项
- 如果类中定义了构造函数,系统将不再自动生成默认构造函数。
- 如果需要默认的无参构造函数(即方便的空构造),需手动声明。
2.5 常见用法
- 一般用于初始化类对象的成员变量。
- 构造函数可以是显式声明的,也可以是根据编译器默认生成的。
三、带参构造函数
3.1 定义带参构造函数
- 带参构造函数的语法格式如下:
类名::构造函数名(参数类型1 参数1, 参数类型2 参数2, ..., 参数类型N 参数N) { // 构造函数实现代码}
例如:
Student::Student(string name, string desc) { m_name = name; m_desc = desc;}
3.2 构造函数的调用
通过以下方式可以调用构造函数:
// 栈内构造Student stu = Student("张三", "我要好好学习");Student stu2(18);// 堆内构造Student* stu3 = new Student("李四", "好好学习");stu3->ShowInfo();delete stu3;
3.3 构造函数的重载
- 构造函数的重载遵循与普通函数重载相同的规则,具体方式如下:
// 只重载选择性参数Student stu4 = 50; // 调用的是 Student(int) 构造函数
示例
Student 类的定义
#include "Student.h"#includeusing namespace std;class Student {public: // 默认构造函数 Student(); // 带参构造函数 Student(string name, string desc); Student(int age); // 可以写成 Student(int) virtual ~Student(); void ShowInfo(); string Getname() { return m_name; } void Setname(string val) { m_name = val; } string Getdesc() { return m_desc; } void Setdesc(string val) { m_desc = val; } int Getage() { return m_age; } void Setage(int val) { if (val < 0) { m_age = 18; } else { m_age = val; } }protected: private: string m_name; string m_desc; int m_age;};
Student.cpp 中的实现
#include "Student.h"#includeusing namespace std;Student::Student() { cout << "默认构造" << endl;}Student::Student(string name, string desc) { m_name = name; m_desc = desc;}
main.cpp 的主函数
#include "bits/stdc++.h"#include "Student.h"using namespace std;int main() { Student stu1; // 栈内构造 stu1.ShowInfo(); Student stu2("张三", "我要好好学习"); stu2.ShowInfo(); Student stu3(18); stu3.ShowInfo(); Student stu4 = 50; // 调用 Student(int) 构造 stu4.ShowInfo(); Student* stu5 = new Student("李四", "好好学习"); stu5->ShowInfo(); delete stu5; return 0;}
输出结果
输出将包含以下信息:
- 默认构造调用带参构造:Student(string name, string desc)调用带参构造:Student(int age)调用带参构造:Student(int age)
- 我要好好学习张三调用函数:ShowInfo()
- 好好学习李四调用函数:ShowInfo()
通过上述内容,可以看出构造函数在类程序设计中的重要性。理解和掌握构造函数的用法,可以极大提升你的C++编程能力。
发表评论
最新留言
很好
[***.229.124.182]2025年04月27日 16时30分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
函数可导和可微的区别: 一元中互为充要;多元中可微是可导的必要条件,可导不一定可微。
2019-03-12
一文说尽C++赋值运算符重载函数(operator=)
2019-03-12
Form窗体属性
2019-03-12
Nintendo - NES Emulators 网站
2019-03-12
android market 开发者注册
2019-03-12
1024程序员节
2019-03-12
删除文件提示“您需要权限才能执行此操作”如何解决
2019-03-12
IC封装图片大全
2019-03-12
自恢复保险丝的选用
2019-03-12
开关电源 误差放大器电路
2019-03-12
电感和磁珠的区别及应用场合和作用
2019-03-12
Altium Designer唤出关掉的窗口
2019-03-12
输入过欠压保护电路原理图
2019-03-12
altium designer PCB 屏蔽DRC报错
2019-03-12
J-link v8固件修复
2019-03-12
Windows7自动安装驱动功能关闭与开启教程
2019-03-12
MDK编译后生成bin文件占用FLASH大小说明
2019-03-12
用keil烧写现成的hex文件
2019-03-12