
C++
Xing_He1
这个作者很懒,什么都没留下…
展开
-
(this)指针
日期类:class Date{public : void Display () { cout <<_year<< "-" <<_month << "-"<< _day <<endl; cout<<this->_year<&原创 2018-11-16 20:06:05 · 281 阅读 · 0 评论 -
C语言和C++的区别
1.函数的默认参数C++允许给参数赋默认值,C语言不允许函数调用的时候会有压栈开销,参数一般是从右向左压参int sub(int a = 10, int b) //错误int sub(int a, int b = 10); //正确注意:int sub(int a, int b = 10); int sub(int a = 10, int b) 这种声明很熟的...原创 2019-04-10 17:07:07 · 968 阅读 · 0 评论 -
类对象大小的计算
class A // 1字节{public: void PrintA { cout&lt;&lt;_a&lt;&lt;endl; }private: char _a;};存储方式:每个对象都输自己的数据成员成员函数放在公共代码区域一个类的大小,实际就是该类中”成员变量”之和编译器给了空类一个字节来唯一标识这个类。存储的时候要遵守内存对其原则:第一个成员在与...原创 2018-11-16 19:54:20 · 409 阅读 · 0 评论 -
struct和class的区别
在C++中class和struct都可以定义类区别在于:struct成员默认访问方式是public,class的默认成员访问方式是private上面提到了3个访问限定符public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)访问权限作用域从该访问限定符出现的位置开始直到下一个访问...原创 2018-11-15 11:03:09 · 1081 阅读 · 0 评论 -
指针空值(nullptr)
在C语言中我们只用NULL作为空指针,而在C++中我们使用nullptr作为空指针,void f(int){ cout<<"f(int)"<<endl;}void f(int*){ cout<<"f(int*)"<<endl;}int main(){ f(0); //调用第一个 f(NULL); //调用第一个 f((int...原创 2018-11-15 10:54:28 · 638 阅读 · 0 评论 -
auto关键字
定义:auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。int TestAuto(){ return 10;}int main(){ int a = 10; auto b = a; // int auto c = 'a'; // char auto d = TestAuto(); // int //a...原创 2018-11-15 10:49:35 · 187 阅读 · 0 评论 -
内联()
定义以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。像宏一样特性inline是一种以空间换时间的做法,省去调用函数额开销。所以代码很长或者有循环/递归的函数不适宜使用作为内联函数。inline对于编译器而言只是一个建议,编译器会自动优化,如果定义为inline的函数体内有循环/递归等等,编译器优化时会忽...原创 2018-11-15 10:36:38 · 327 阅读 · 0 评论 -
引用(&)
** 引用的定义:** 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。#include<iostream>using namespace std;int main(){ int a = 10; int& ra = a; a = 20; //a, ra 都改为20,a,ra的地址一样...原创 2018-11-15 10:31:39 · 554 阅读 · 0 评论 -
函数重载
函数重载的定义: 是函数的一种特殊形式,C++允许在同一作用域中声明几个功能相似的同名函数,这些同名函数的形参列表(参数个数 或类型或顺序)必须不同,常用来处理实现功能相似数据类型不同的问题。返回值相同函数名相同我们需要搞清楚为什么C语言不支持函数重载,而C++支持???命名修饰规则运行需要经过下面4步:1.预处理:去注释、条件编译、宏替换、头文件的包含2.编译:生成汇编代码...原创 2018-11-15 09:59:43 · 156 阅读 · 0 评论 -
缺省参数(备胎)
默认缺省参数的定义: 声明或定义函数时为函数的参数指定一个默认值,在调用该函数时, ①如果没有指定实参则采用该默认值, ②否则使用指定的实参#include<iostream>using namspace std;void TestFunc(int a = 0){ cout<<a<<endl;}int main(){ TestFu...原创 2018-11-15 09:07:06 · 200 阅读 · 0 评论 -
输入和输出(cout/ cin)
#include<iostream>using namespace std;int main(){ cout<<"Hello world!!!"<<endl; return 0;}cout标准输出(控制台)cin标准输入(键盘)必须包含头文件#include<iostream>和std标准命名空间C++的输入输出很方便,不需要格...原创 2018-11-15 08:53:01 · 251 阅读 · 0 评论 -
命名空间
出现的原因: 在C/C++中,变量、函数和类都大量存在,这些变量、函数和类的名称都存在全局作用域中,可能会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突。命名空间的定义:命名空间用关键字namespace,后面是命名空间的名称,然后又一堆{},{}中的是命名空间成员。//1.普通命名空间namespace N1 // N1为命名空间的名称{ // 命...原创 2018-11-15 08:48:18 · 174 阅读 · 0 评论 -
C++的关键字
C++的关键字比C语言要丰富好多一共63个关键字,比C语言多出一半,C语言一共32个关键字原创 2018-11-15 08:34:13 · 254 阅读 · 0 评论 -
运算符重载
运算符重载函数原型:返回值类型 operator操作符(参数列表)不能通过连接其他符号来创建新的操作符:比如operator@重载操作符必须有一个类类型或者枚举类型的操作数用于内置类型的操作符,其含义不能改变,例如:内置的整型+,不 能改变其含义作为类成员的重载函数时,其形参看起来比操作数数目少1成员函数的操作符有一个默认的形参this,限定为第一个形参.* 、:: 、...原创 2018-11-16 21:12:12 · 293 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用特征拷贝构造函数是构造函数的一个重载形式拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用若未显示定义,系统生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝我们叫做浅拷贝(值拷贝),有时候会...原创 2018-11-16 21:05:17 · 246 阅读 · 0 评论 -
构造函数与析构函数
Date类class Date{private : int _year ; int _month ; int _day ;};1.构造函数定义:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次特征函数名与类名相同。无返回值。对象实例化时编译器自动调用对应的构造函...原创 2018-11-16 20:49:20 · 374 阅读 · 0 评论 -
malloc的底层实现
内存管理(虚拟内存空间)每个进程都有一个虚拟内存空间,虚拟内存空间通过MMU(存储器管理单元)映射到真正的物理空间,MMU是一个硬件,利用存储在主存中的查询表翻译虚拟地址,查询表由操作系统管理,用户无法获取。虚拟地址空间给每个进程一个假象,就像每个进城拥有4G的运行空间一样,但是实际在使用内存的时候,虚拟地址空间通过映射到物理地址空间。物理内存已经映射的物理空间有一个break指针,指针...原创 2019-04-09 17:15:52 · 280 阅读 · 0 评论