一些关于c++的琐碎知识点

这篇具有很好参考价值的文章主要介绍了一些关于c++的琐碎知识点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

bool强转

const构成重载:const修饰*p

 移动构造

new int (10)所做的四件事

this指针---为什么函数里面需要this指针?

.和->的区别

new创建对象

仿函数

new和malloc的区别

c++系统自动给出的函数有

delete和delete[ ]区别何在

检查有没有析构函数

explict外部

内存泄漏的本质:丢失了内存地址

不能重载的运算符:?:、::、*.

using

为什么空间释放了但还是可以读取数据

函数的生存期不受函数生存期影响时,可以使用引用返回;

struct和class在设计类时的区别

结构体为什么一定要内存对齐?

c++11的铁三角

右值/左值/值返回与将亡值

a++不可以取地址;++a可以取地址

引用的本质是指针,自身为常性


bool强转

可以将变量变为bool类型,在if语句中可以判断

operator bool() const
{
    return (ptr !=nullptr);
}

const构成重载:const修饰*p

void func(int *p){}
void func(const int* p){}

 移动构造

my_unique_ptr(const my_unique_ptr&& x)
{
    ptr = x.ptr;
    x.ptr = nullptr;
}

拷贝构造和移动构造同时书写了,那么就会调用移动构造

new int (10)所做的四件事

1.计算10的大小 2.malloc 3.赋值 4.返回所在地址

new没有能力去构造常对象 

一些关于c++的琐碎知识点is具有常性,不可以对is的指向进行修改。

 一些关于c++的琐碎知识点const修饰*is,is的指向可以修改

this指针---为什么函数里面需要this指针?

  • 创建对象类型有多个,方法共享只有一个,用this来调用函数方法
  • 系统是面向过程编程,底层把面向对象编程变为面向过程的体系
  • 类的成员函数都含有this指针,只有static,友元,全局没有this指针。

.和->的区别

.  的时候函数都是智能指针的方法

 -> 的时候函数都是 类 类 型 的方法

new创建对象

std::unique_ptr<Int> ip(new(10));
 
std::unique_ptr<Int> sp=new Int(100);

仿函数

struct ADD
{
    int operator()(int a, int b) const//仿函数()
    {
        return a + b;
    }
};
 
int main()
{
    ADD add;
    int x = add(12, 23);//调用仿函数
    //标准c++没有三元仿函数
    x = add.operator()(12, 23);//把括号当成函数名了
}

new和malloc的区别

  • 失败处理方式不同,new会抛出异常,malloc不会
  • new有构造函数予以赋值
  • new有重载运算符

c++系统自动给出的函数有

  • 缺省的构造
  • 缺省的拷贝构造
  • 缺省的析构
  • 缺省的赋值

 !!!以上四个必须有

delete和delete[ ]区别何在

int main()
{
    Int* p=new Int(10);
    Int*s =new Int[10];
 
    delete p;
    delete[]s;
    return 0;
}

检查有没有析构函数

小tips:写代码判断是否相等时得把常量放在左边,变量放在右边

explict外部

内存泄漏的本质:丢失了内存地址

不能重载的运算符:?:、::、*.

using

是类型重定义(命名),和typdef的意义差不多

为什么空间释放了但还是可以读取数据

int ar[100000];栈帧构建的太大,数据在接近栈处,即使把空间释放了,但是在处理过程中无法干扰数据,所以值还是可以被打印出来

函数的生存期不受函数生存期影响时,可以使用引用返回;

struct和class在设计类时的区别

* 1.模板类型定义class可以,typename可以,struct不可以

* 2.struct默认公有,class默认私有

* 3.在设计类型时,纯虚函数interface

*/

结构体为什么一定要内存对齐?

提高内存的访问效率

一些关于c++的琐碎知识点结构体内存对齐是拿空间换取时间的做法。提高效率

c++11的铁三角

C++11和C11都是C++11

右值/移动/完美转发

右值/左值/值返回与将亡值

 通用寄存器eax,ebx,ecx,edx(都只有四字节),作为将亡值的返回时的保存

 如何将结构体初始化后返回到调用函数内?

值返回时 会在主函数中建立一个将亡值的副本,把调用函数返回值(将亡值)赋给指针(内置类型)产生的将亡值不可写

 将亡值没有名字就是纯右值(归结到右值中),有名字就是泛左值(归结到左值中)

 将亡值在表达式的计算中产生

将亡值可修改吗:

1.内置类型值返回时的将亡值不可以修改

2.类类型(即程序员自己设计的类型)值返回时的将亡值可修改

a++不可以取地址;++a可以取地址

a++是一个没有名字的将亡值(a+1) 还没有给a赋值,取地址(先取地址再++)

++a是先把将亡值(a+1)已经赋值给了a,再取地址(先++再取地址)

引用的本质是指针,自身为常性

static没有this指针

static函数与非static函数最大的区别文章来源地址https://www.toymoban.com/news/detail-468276.html

到了这里,关于一些关于c++的琐碎知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++11一些知识点

    1、C++11实现生产者与消费者模型 2、unique_lock与lock_guard的比较 引用自:施磊老师的《C++高级课程》

    2024年02月12日
    浏览(40)
  • mysql innodb一些知识点

    1、事务和锁的关系; 在MySQL事务中,只要开始了一次事务,就会自动加上一个共享锁(Shared Lock)。这个锁会在事务结束时自动释放。如果在事务中需要更新某个数据对象,那么MySQL会将该数据对象的共享锁升级为排他锁(Exclusive Lock),这可以确保在其他事务中对该数据对象

    2024年02月14日
    浏览(39)
  • PLSQL一些常用的知识点

    此处简单的记录一下在 oracle中如何使用plsql语法,记录一些简单的例子,防止以后忘记。 统计总共有多少个学生,并进行if判断。 输出1到100 需要放到 execute immediate 中执行,否则会报错。 存在更新,不存在插入。 包头 可以简单的理解 java 中的接口。 包体 可以简单的理解

    2024年02月04日
    浏览(41)
  • 数据库相关理论知识(有目录便于直接锁定相关知识点+期末复习)

    一,数据模型,关系型数据模型,网状模型,层次模型 1. 数据库模型 是用来描述和表示现实世界中的事物、概念以及它们之间的关系的工具, 但是并不是越专业越好,还要平衡它的模型的复杂性、通用性和成本效益等因素 。数据模型按不同的应用层次可以分为 三个层次 ,

    2024年03月16日
    浏览(56)
  • 分享刷题的一些小知识点--4.9日

    1.string库提供了 、、==、=、=、!= 等比较运算符,比如两个字符串s和t,直接(s==t)是正确的。 2.unordered_map 容器,直译过来就是\\\"无序 map 容器\\\"的意思。所谓“无序”,指的是 unordered_map 容器不会像 map 容器那样对存储的数据进行排序。换句话说,unordered_map 容器和 map 容器仅有

    2023年04月11日
    浏览(48)
  • 使用es必须要知道的一些知识点:索引篇

    在当今数据驱动的世界中,Elasticsearch(简称ES)成为了一个强大而广泛应用的搜索和分析引擎。ES提供了快速、可扩展且高度可靠的数据存储和检索解决方案。然而,要真正掌握ES的各种功能和最佳实践,需要通过实践才能获得真正的知识。 在Elasticsearch(ES)中,index操作和

    2024年02月08日
    浏览(43)
  • 传输层中一些零碎且易忘的知识点

    端口号:共两个字节 不同类型的端口号: 服务端端口号 熟知端口号:0~1023 登记端口号:1024~49151 客户端使用端口号(短暂/临时端口号):49152~65535 要记得常见应用程序的熟知端口号 FTP:21 TELNET:23 SMTP:25 DNS:53 TFTP:69 HTTP:80 SNMP:161 首部与伪首部: 伪首部中协议字

    2024年02月15日
    浏览(39)
  • 网络层中一些零碎且易忘的知识点

    异构网络:指传输介质、数据编码方式、链路控制协议以及数据单元格式和转发机制不同,异构即物理层和数据链路层均不同 虚电路:网络层可以向传输层提供两种类型的服务,面向连接的服务称为虚电路服务,而无连接的服务称为数据报服务。虚电路的想法是避免为发送的

    2024年02月15日
    浏览(42)
  • 数据结构中一些零碎且易忘的知识点

    第一章 绪论 数据结构包含三个方面的内容: 数据的逻辑结构:描述数据之间逻辑关系的、与数据的存储无关的数学模型。相同的逻辑结构可使用不同的存储结构存储,如线性表既可顺序存储,也可链式存储 线性结构:一个线性表是n个具有相同特性的数据元素的有限序列 一

    2024年02月14日
    浏览(41)
  • 关于Docker的知识点

    Docker是一个快速交付应用、运行应用的技术。 Docker基本操作--容器 示例:创建运行一个Nginx容器

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包