- C:面向过程的思想,侧重于学习编程思想(函数设计)。
- C++:面向对象的设计(不存,有源破坏了封装性),面向对象的思想(类的设计)。
- C++兼容C语言
- #include
//预处理(预编译)命令,std in/out 标准输入输出流。 - #inlcude
- using namespace std;
< > :库内头文件
" " :自己写的
- istream类:输入流类
- ostream类:输出流类
- 当C++工程较大时,程序内存在大量的变量、函数和类,如果这些变量、函数和类都存在于同一个作用域中,一不小心就可能会导致命名冲突。为了解决这个问题,C++引入了命名空间(namespace)这个概念,这样在不同的命名空间中允许存在同名的标识符。有了命名空间我们就可以在程序中有效地避免命名冲突,简易的说就是解决在使用时找不到名字的情况下,“词穷”。下面举一个利用命名空间解决命名冲突问题的例子。
namespace AA { void sort() { count<<"AA::sort()"<//输出结果用于验证 } } //这个是AA::sort() namespace BB { void sort() { count<<"BB::sort()"< } } //这个是BB::sort()- 定义了两个命名空间AA和BB,两个命名空间和主函数中都有sort()函数,但是并没有产生命名冲突,这就是使用namespace的好处。命名空间其实是对标识符的名称进行本地化,以避免命名冲突或名字污染。
- 使用:
using namespace AA; void main() { sort(); AA::sort(); }//这两种都是调用AA里的sort() /* using namespace BB; void main() { sort(); BB::sort(); }//这两种都是调用BB里的sort() *C和C++区别
结构体区别
- struct Student
- {
};- C语言内
- 结构体不可以为空,内部至少一个成员。
- 上例所示,其中Student叫做结构体名
- 结构体内不能有函数,成员不可以是函数。
- C++内
- 结构体可以为空,大小为1,1是占位符
- 结构体内可以有函数。
- 上例中,Student叫做类型名
函数重载
- 定义:函数名相同(同一个作用域),参数列表不一样
struct AA { void fn() { } //这个叫做AA::fn } void fn() { } //这个叫做fn ::fn void fn(int a) { } //这个叫做fn ::fn- 上面三种均是函数重载
- 函数名相同,函数参数列表不同
- 不能通过函数返回值能确定是否重载
- 举例说明:
- 1:
class Clock { public: void Set() { this->m_hour=12;//m_ :成员 this->m_minute=20; this->m_second=30; } void Set(int h) { this->m_hour=h; this->m_minute=20; this->m_second=30; } void Set(int h,int m) { this->m_hour=h; this->m_minute=m; this->m_second=30; } void Set(int h,int m,int s) { this->m_hour=h;//m_ :成员 this->m_minute=m; this->m_second=s; } void Show() { //输出 cout<<this->m_hour<<":"<<this->m_minute<<":"<<this->m_second< } private: int m_hour;//m_ :成员 int m_minute; int m_second; }; void main() { Clock c,c1,c2,c3;//定义一个实际对象c。Clock:类,c:对象 c.set(); c1.set(9); c2.show(10,20); c3.set(20,14,20); c.show(); c1.show(); c2.show(); c3.show(); /*根据参数个数不同,分别调用不同函数。 输出结果为: 12:30:30 9:20:30 10:20:20 20:14:20*/ }
- 上面的4个set()函数是函数重载
- 这个情况下不是:
- 2:
class Clock { public: void Set() { this->m_hour=12;//m_ :成员 this->m_minute=20; this->m_second=30; } void Set(int h) { this->m_hour=h; this->m_minute=20; this->m_second=30; } }; void Set(int h,int m) { this->m_hour=h; this->m_minute=m; this->m_second=30; }- 因为的clock里的public的set()外部应叫做Clock::Set(),而不是set(),因此两个函数名不一致,不属于函数重载
引用
含义介绍
int &b=a; b=10;
- 取地址在赋值号右边,声明时的&是引用
- b是a的引用(b是a的别名)
- b有内存单元
- 改变b的值,a也会改变。b=20,a=20。
- 引用必须在声明的时候必须初始化,不能写int b;
- b会随着a的消亡而消亡,没有空引用。
引用和指针的区别
- 声明时,引用必须初始化,指针可以不初始化
- 指针可以为空,引用不可以为空
- 指针可以修改指向,引用不可以为空
- 指针大小永远为4字节,引用大小和实体大小一致。
参考文献
- 相关阅读:
Java项目:96 springboot精品在线试题库系统
炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办!
C#与欧姆龙PLC实现CIP通讯
怎么让英文大预言模型支持中文?(二)继续预训练
人机交互——对话管理
网络安全(黑客)自学
ROS(0)命令及学习资源汇总
springboot大学生课堂考勤管理系统的设计与实现
Spring动态代理源码分析
apache开启https
- 原文地址:https://blog.csdn.net/qq_53830608/article/details/126978887