![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++学习
莫名醉心
这个作者很懒,什么都没留下…
展开
-
C++之std::async()
如果选择异步执行策略,调用get时,如果异步执行没有结束,get会阻塞当前调用线程,直到异步执行结束并获得结果,如果异步执行已经结束,不等待获取执行结果;(可以试试调换代码中异步和同步get的顺序,可以明显发现在执行异步时,如果没有执行结束,get会阻塞当前调用线程,直到有结果,而同步的话,只有在调用get时,才开始执行)3.std::launch::async | std::launch::deferred 是将同步还是异步的选择权交给操作系统,由操作系统去抉择。3.timeout:异步操作超时。原创 2023-08-15 19:53:07 · 314 阅读 · 0 评论 -
C++的内存对齐
举个例子:比如intel 32位cpu,每个总线周期都是从偶地址开始读取32位的内存数据,如果数据存放地址不是从偶数开始,则可能出现需要两个总线周期才能读取到想要的数据,因此需要在内存中存放数据时进行对齐。在学习操作系统的时候,看到对于伪共享的应对方法是内存对齐,由此想到了C++中的内存对齐问题,之前学习的时候并没有注意这一点,今天梳理一下。C++中的内存对齐,是为了提高内存的访问效率,防止一次读取内存就能解决的问题,需要两次甚至更多次的访问内存。在内存中存放一个结构体的实例。可见,需要两个总线周期。原创 2023-08-07 21:09:45 · 66 阅读 · 0 评论 -
override 和 overload
被重写的方法不能为private,静态方法不能被重写为非静态,重写方法的访问修饰符一定要大于被重写方法的访问修饰符。可以重载的,可以是类的成员函数,也可以普通函数,也可以重载运算符。只有在运行阶段才能确定调用的是哪个函数。即面向对象的多态特性,即。在编译的时候,根据参数列表判断调用哪个函数。参数个数不同,参数的类型不同,或者两者兼有。函数名,参数列表完全相同、返回值也相同。可以覆盖的,只能是子类重写父类的虚函数。仅返回值类型不同,不能认为是函数重载。封装:实现代码的模块化。的一种形式,实现多态。原创 2023-08-02 17:58:21 · 81 阅读 · 1 评论 -
C++中基类和派生类
那么他就应该上学,这是学生该做的事情。这么做是非常有道理的,是满足继承的要求的。例如,编译器允许基类引用隐式地引用派生类对象,可以利用该基类引用为所引用的派生类对象调用基类的方法。如代码所示,如果我用Person的指针和引用调派生类Student自己的方法goSchool(),那么编译器是绝对不会通过的。注意:虽然基类的指针和引用可以指向、引用派生类,但是反过来是绝对不可以的。派生类的指针和引用是绝对不可以指向、引用基类的。此时需要注意,虽然基类指针指向的是派生类的对象,但其调用的仍是基类的函数。原创 2023-08-02 16:27:14 · 82 阅读 · 1 评论 -
C++之动态、静态联编
在运行阶段,实现的联编称为动态联编。在C++中一般是静态联编,只有在实现虚函数的时候,会出现动态联编,即基类的指针指向派生类的地址或将派生类的对象赋给基类的引用。虚函数的调用规则是:根据当前对象,优先调用对象本身的虚成员函数。这和名字支配规律类似,不过虚函数是动态联编的,是在运行时(通过虚函数表中的函数地址)“间接"调用实际上欲联编的函数。联编,即绑定,就是将模块或者函数合并在一起生成可执行代码的过程,同时对每个模块或函数分配内存地址,并且对外部访问也分配正确的内存地址。动态联编:类成员函数动态。原创 2023-08-01 17:44:10 · 76 阅读 · 0 评论 -
define和typedef的区别
3.常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,在静态存储区中分配空间,但在程序运行过程中,内存中只有一个拷贝,也就是不分配实际的内存空间。3.通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善、背后一长串”的宏。4.在语法上是一个存储类的关键字,如:auto;虽然它并不真正的影响对象的存储特性。1.#define是预处理指令,只在预处理阶段起作用。2.只是进行简单的字符串的替换,没有类型检查。两者都可以实现重定义的功能。1.在编译、运行阶段起作用。原创 2023-07-31 22:07:07 · 56 阅读 · 1 评论 -
常量指针和指针常量的区别
const的作用:被他修饰的值不能改变,即只读变量,因此必须在定义时赋初值,即需要初始化。是指定义了一个指针,指向一个只读变量,不可以通过这个指针去改变变量的值。是指定义一个指针,这个指针只能在定义时初始化,其他地方不能改变。结论:常量指针无法通过指针修改变量的值。首先是修饰字const。原创 2023-07-31 20:35:21 · 48 阅读 · 1 评论 -
C++之共有继承、保护继承、私有继承
结论:私有继承中,在派生类中,能访问基类的public(在派生类中变为private)、protected成员(派生类中变成private),不能访问private成员;结论:保护继承中,在派生类中,能访问基类的public(在派生类中变为protected)、protected成员,不能访问private成员;结论:共有继承中,在派生类中,能访问基类的public、protected成员,不能访问private成员;在派生类外,即通过类对象只能访问public成员,基类的成员都不能被访问。原创 2023-07-31 17:22:55 · 396 阅读 · 1 评论