news 2026/4/16 17:58:50

C++程序设计入门:从C语言过渡到面向对象编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++程序设计入门:从C语言过渡到面向对象编程

目录

一、课程核心信息

1. 培养目标

2. 课程安排

3. 参考教材

二、C语言核心知识复习(衔接基础)

1. 概述要点

2. 核心知识点梳理

(1)数据类型

(2)程序结构

(3)数组与字符串

(4)函数与指针

(5)结构体

3. 复习练习(实战巩固)

三、C++与C语言的核心区别

1. 关系定位

2. 编程思想对比

3. 代码示例对比(求圆的面积与周长)

(1)面向过程(C语言)

(2)面向对象(C++)

四、C++对C语言的核心扩充(重点)

1. 输入输出流(cin/cout)

2. const定义常变量(替代#define)

3. 函数重载(同名函数多态)

4. 函数模板(通用函数)

5. 变量的引用(别名,替代指针)

6. 动态内存分配(new/delete)

7. 字符串变量(string类)

五、课后习题(实战强化)

总结


大家好!今天给大家带来一篇C++入门的核心知识点梳理,专门针对从C语言过渡到C++的小伙伴。本文基于《C++面向对象程序设计》第一章核心内容,帮大家快速衔接C语言基础、掌握C++核心新增特性,搭建完整的入门知识框架,为后续深入学习打下坚实基础~

📌 本文适用人群:C语言基础扎实,准备入门C++的初学者 📚 核心目标:理解面向对象思想,掌握C++高频基础特性 💻 阅读建议:结合代码示例实操,重点理解C与C++的思想差异

一、课程核心信息

1. 培养目标

  • 掌握C++语言基本语义、语法,初步理解面向对象思想及程序设计方法;

  • 提升编程与调试能力,为后续课程(如数据结构、操作系统)铺垫基础。

2. 课程安排

  • 理论教学:C++语言特点、语法规则、程序设计示例;

  • 实践环节:上机实验(强化代码实操与调试能力);

  • 核心要求:理论与实践结合,重视代码规范性和可读性。

3. 参考教材

  • 选用教材:《C++面向对象程序设计》(陈希 著);

  • 参考教材:《C++ Primer》中文版(Stanley B. Lippman 著)—— 经典权威,适合深入钻研。

二、C语言核心知识复习(衔接基础)

C++是C语言的超集,学好C++的前提是扎实掌握C语言核心知识点,以下是重点回顾:

1. 概述要点

  • C程序由函数构成,支持模块化设计;

  • 程序入口固定为main函数,与函数位置无关;

  • 语句以;结尾,注释支持/*…*/(多行)和//(单行);

  • 无内置输入输出语句,需借助printfscanf等标准库函数。

2. 核心知识点梳理

(1)数据类型

  • 基本类型:int(整型)、char(字符型)、float(单精度浮点型)、double(双精度浮点型);

  • 构造类型:数组、struct(结构体)、union(共用体)、enum(枚举);

  • 特殊类型:指针类型、void(空类型)。

(2)程序结构

  • 顺序结构:输入输出函数(getchar/putcharprintf/scanf);

  • 选择结构:if语句、?:运算符、switch…case

  • 循环结构:whiledo…whilefor循环,continue(跳过本次循环)、break(终止循环)。

(3)数组与字符串

  • 支持一维、二维数组,字符数组存储字符串;

  • 常用字符串处理函数:puts(输出)、gets(输入)、strcpy(复制)、strcat(拼接)、strcmp(比较)、strlen(长度)。

(4)函数与指针

  • 函数:定义、调用、参数传递(值传递、地址传递)、局部/全局变量、递归;

  • 指针:定义与引用、指针与数组/字符串、指针作为函数参数(实现双向传值)。

(5)结构体

  • 自定义复合类型,可包含多个不同类型成员;

  • 示例:

    struct Student { char name[20]; // 姓名 int age; // 年龄 };

3. 复习练习(实战巩固)

题目:按行顺序为5×5二维数组赋1-25的自然数,编写函数求所有元素总和及左下半三角元素。

正确代码

#include <stdio.h> // 计算数组总和 int SUM(int a[5][5]) { int i, j, s = 0; for (i = 0; i <= 4; i++) for (j = 0; j <= 4; j++) s += a[i][j]; return s; } // 输出左下半三角元素(i >= j) void printLowerTriangle(int a[5][5]) { int i, j; for (i = 0; i <= 4; i++) { for (j = 0; j <= 4; j++) { if (i >= j) printf("%d ", a[i][j]); } printf("\n"); } } int main() { int a[5][5], i, j, k = 1, total; // 赋值1-25 for (i = 0; i <= 4; i++) for (j = 0; j <= 4; j++) a[i][j] = k++; // 调用函数 total = SUM(a); printLowerTriangle(a); printf("数组总和:%d\n", total); return 0; }

运行结果

1 6 7 11 12 13 16 17 18 19 21 22 23 24 25 数组总和:325

三、C++与C语言的核心区别

1. 关系定位

  • C++是C语言的超集,绝大多数C代码无需修改即可在C++中运行;

  • 核心差异:C语言仅支持面向过程编程(关注步骤与函数),C++新增面向对象编程(关注对象、属性与行为)。

2. 编程思想对比

通过三个实例直观感受两种编程思想的差异:

应用场景

面向过程(C语言)

面向对象(C++)

学生信息管理系统

按“输入→处理→输出”步骤编写独立函数

定义“学生”“班级”对象,封装属性与操作(增删改查)

五子棋游戏

按“开局→落子→绘图→判赢”顺序执行

拆分“玩家”“棋盘”“规则”对象,各司其职

俄罗斯方块

按“生成方块→移动→消除→判结束”步骤编码

定义“方块”(下落、旋转)、“棋盘”(绘图、消行)对象

3. 代码示例对比(求圆的面积与周长)

(1)面向过程(C语言)

#define PI 3.1415926 #include <stdio.h> int main() { double r = 10; double perimeter = 2 * PI * r; // 周长 double area = PI * r * r; // 面积 printf("周长:%lf,面积:%lf\n", perimeter, area); return 0; }

(2)面向对象(C++)

#include <iostream> using namespace std; #define PI 3.1415926 // 定义“圆”类(封装属性与方法) class Circle { private: double x, y; // 圆心坐标(私有属性,仅类内访问) double radius; // 半径(私有属性) public: // 构造函数(初始化对象) Circle(double x=0, double y=0, double r=1.0) { this->x = x; this->y = y; this->radius = r; } // 计算面积(成员方法) double getArea() { return PI * radius * radius; } // 计算周长(成员方法) double getPerimeter() { return 2 * PI * radius; } }; int main() { Circle myCircle(0, 0, 10); // 创建“圆”对象 cout << "面积:" << myCircle.getArea() << endl; cout << "周长:" << myCircle.getPerimeter() << endl; return 0; }

四、C++对C语言的核心扩充(重点)

C++在C语言基础上新增了诸多实用特性,大幅提升编程效率和代码灵活性,以下是高频考点:

1. 输入输出流(cin/cout)

  • 优势:无需指定数据类型,支持endl换行,语法更简洁;

  • 示例:

    #include <iostream> using namespace std; // 命名空间(必须声明) int main() { double x, y; cout << "请输入两个数:"; // 输出提示 cin >> x >> y; // 输入数据(自动匹配类型) cout << "x + y = " << x + y << endl; // 输出结果 return 0; }

2. const定义常变量(替代#define)

  • C语言#define缺陷:无类型、仅字符替换(易出错);

  • C++const优势:有类型、占内存、值不可修改,支持指针指向;

  • 示例:

    #include <iostream> using namespace std; int main() { const float PI = 3.14159; // 常变量(只读,不可修改) // PI = 3.14; // 报错:只读变量不能赋值 cout << "PI = " << PI << endl; return 0; }

3. 函数重载(同名函数多态)

  • 定义:同一函数名,参数个数/类型不同(返回值可同可不同);

  • 示例(求不同类型/个数的最大值):

#include <iostream> using namespace std; // 3个int最大值 int max(int a, int b, int c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } // 2个float最大值 float max(float a, float b) { return a > b ? a : b; } int main() { cout << "int最大值:" << max(3, 7, 5) << endl; cout << "float最大值:" << max(2.1f, 1.8f) << endl; return 0; }

注意:不可仅靠返回值不同实现重载(编译器无法区分)。

4. 函数模板(通用函数)

  • 解决问题:避免重载函数的重复编码,适配多种数据类型;

  • 格式:template <typename T> 返回类型 函数名(参数表)

  • 示例:

    #include <iostream> using namespace std; // 函数模板(T为虚拟类型,自动匹配实参类型) template <typename T> T max(T a, T b, T c) { return a > b ? (a > c ? a : c) : (b > c ? b : c); } int main() { cout << "int最大值:" << max(3, 7, 5) << endl; cout << "long最大值:" << max(10L, 20L, 15L) << endl; return 0; }

5. 变量的引用(别名,替代指针)

  • 定义:类型 &引用名 = 变量名,与变量共享内存(无独立空间);

  • 核心特性:必须初始化、不可更改关联对象、更安全(无空引用);

  • 示例(作为函数参数实现双向传值):

    #include <iostream> using namespace std; // 引用作为参数,直接操作原变量 void swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int i = 3, j = 5; swap(i, j); // 无需传地址,直接传变量 cout << "i = " << i << ", j = " << j << endl; // 输出:5 3 return 0; }

6. 动态内存分配(new/delete)

  • 替代C语言的malloc/free,优势:自动计算类型大小、支持初始化、语法简洁;

  • 示例:

    #include <iostream> using namespace std; int main() { // 1. 分配单个变量 int *p1 = new int(5); // 初始化值为5 cout << *p1 << endl; delete p1; // 释放空间 // 2. 分配数组 int *p2 = new int[10]; for (int i = 0; i < 10; i++) p2[i] = i; delete[] p2; // 数组释放需加[] return 0; }

7. 字符串变量(string类)

  • 替代字符数组,支持直接赋值、拼接、比较,无需手动管理\0

  • 示例:

    #include <iostream> #include <string> // 必须包含头文件 using namespace std; int main() { string s1 = "Hello"; string s2 = "World"; string s3 = s1 + " " + s2; // 字符串拼接(直接用+) cout << "s3 = " << s3 << endl; // 输出:Hello World cout << "s3长度:" << s3.size() << endl; // 输出:11 // 字符串比较 if (s1 < s2) cout << s1 << " < " << s2 << endl; return 0; }

五、课后习题(实战强化)

  1. 利用引用实现两个整数的交换(已在“引用”部分示例);

  2. 输入一个字符串,反向输出每个字符:

    #include <iostream> #include <string> using namespace std; int main() { string str; cout << "请输入字符串:"; cin >> str; // 反向输出 for (int i = str.size() - 1; i >= 0; i--) cout << str[i] << " "; return 0; }
  3. 利用函数模板实现两个不同类型数据的最大值比较(提示:使用多类型参数template <typename T1, typename T2>)。

总结

本章重点围绕C++的基础入门与C语言的衔接,核心是理解面向对象编程思想与C++的新增特性。建议结合示例代码反复实操,重点掌握cin/cout、引用、函数重载、模板、动态内存分配等高频知识点。后续将深入学习类与对象、继承与多态等核心内容,敬请关注!

💬 互动环节:如果大家在学习过程中有任何疑问,或者代码调试遇到问题,欢迎在评论区留言讨论~ 觉得本文对你有帮助的话,别忘了点赞、收藏、关注博主,后续会持续更新C++相关知识点!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:33:05

如何快速解锁付费内容:Bypass Paywalls Clean完整使用指南

如何快速解锁付费内容&#xff1a;Bypass Paywalls Clean完整使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在数字化信息时代&#xff0c;优质内容往往被付费墙层层保护&am…

作者头像 李华
网站建设 2026/4/16 12:39:13

Molecular Operating Environment (MOE) 快速安装与使用终极指南

Molecular Operating Environment (MOE) 快速安装与使用终极指南 【免费下载链接】最新MolecularOperatingEnvironmentMOELinuxWindows下载指南 最新 Molecular Operating Environment (MOE) Linux Windows 下载指南本仓库提供最新版本的 Molecular Operating Environment (MOE…

作者头像 李华
网站建设 2026/4/15 18:50:28

docker swarm 集群部署

一、环境准备swManager192.168.233.144node1192.168.233.145node2192.168.233.146二、基础环境配置&#xff08;所有节点&#xff09;1、各节点根据节点配置表修改自己的主机名&#xff0c;并且把所有节点的信息添加到hosts文件 2、设置ssh从sw_Manager上免密登录其它节点得到s…

作者头像 李华