C++
Balimango
微信公众号:老码囧途
展开
-
C++11多线程
1、std::thread在C++11之前,C++语言层面是不支持多线程的,想利用C++实现并发程序,借助操作系统的API实现跨平台的并发程序存在着诸多不便,当C++11在语言层面支持多线程后,编写跨平台的多线程代码就方便了许多。C++11提供的std::thread在开发多线程方面带来了便捷。#include <iostream>#include <thread>void threadfunc(){ std::cout << "thread原创 2020-07-09 09:54:03 · 1073 阅读 · 0 评论 -
C++之this指针
this指针藏在哪里在学习C++的过程中经常遇到一个神出鬼没的指针–this指针,本文就是揭秘一下this指针的实现机制。C++是一种面向对象的编程语言,那么面向对象到底是一种怎样的实现机制呢?在《老码识途》这本书中,它说函数本身如同一个芯片,代码就是电路,局部变量就是存储元件,函数的代码只会操作自己的局部变量,不会操作其他函数,芯片的工作方式如同“能动体”,而C++的工作方式就像芯片一样,通过自己实现的函数去操作自己的数据,即将行为与数据合一,这就是封装的思想。对于C++中的非静态成员函数,需要初始原创 2020-07-07 20:21:38 · 232 阅读 · 0 评论 -
C++之虚函数
在C++中可以通过继承基类的虚函数来实现多态,virtual就是虚函数的关键字,当编译器扫描一个类定义时,就可将该类所有标记为virtual的函数找出,然后分配一个全局数组保存他们的地址,这时就可以给保存函数地址的数组一个新称号“虚表”,就是虚函数的地址表。而且虚函数第一次声明的顺序就决定了他们在虚表中存储的顺序。当生成虚表后,编译器在编译一个有虚函数的类(包括自己没有,但是基类有)的构造函数时,就可在函数的一开始加入代码,将虚表的地址赋给对象的前4个字节(其实就是在对象的前4个字节保存指向虚表的指针)。原创 2020-07-07 20:16:30 · 339 阅读 · 0 评论 -
大小端编码
一般不同的机器有着不同的 CPU 型号,不同的 CPU 其字节序可能不一样。所谓字节序指的是对于存储需要多个字节(大于 1 字节)的整数来说,其每个字节在不同的机器内存中存储的顺序。这就是所谓的主机字节序,一般分为两类:1.小端编码(little endian) 对于一个整数值,如果使用小端字节序,整数的高位存储在内存地址高的位置,整数的低位存储在内存地址低的位置...原创 2019-12-21 15:40:27 · 2309 阅读 · 2 评论 -
C++中clock()与time()
```cpp#include <iostream>#include <ctime> //time()#include <thread> //this_threadint main(){ //clock()计算时间并打印 clock_t time0 = clock(); std::cout << "****...原创 2019-12-11 21:28:52 · 1350 阅读 · 0 评论 -
The C/CXX compiler identification is unknown
今天在用cmake工具生成 vs的解决方案的时候老是报错,无法找到c和c++编译器,电脑环境是win7,vs2017,cmake3.15,电脑装了vs2013,如果选择vs2013就没有问题,网上查找了很多答案,一点点探索,终于OK了。刚开始也配置了vs的环境变量,安装组件但都不行,后来就打开生成失败的文件夹,里面有个CMakeError.log日志文件;打开之后:可以看到无法...原创 2019-07-01 13:36:52 · 9943 阅读 · 0 评论 -
Windows和Linux上生成动态库(dll,.so)
最近在负责一个模块功能的开发,然后需要封装出接口,以前没搞过,在网上搜寻了很多答案,终于搞好了。一、首先在Windows上进行封装:IDE是vs2017:1、首先写好所需的头文件和源文件。接口定义在头文件中,对应的一个源文件是接口的实现。然后移除掉main.cpp.2、然后添加def文件,是用来到处接口函数的。3、接着编写这个def文件格式:LIBRARY...原创 2019-06-27 12:13:07 · 7276 阅读 · 6 评论 -
构造函数的初始化
一般成员变量的初始化有两种方式:1、在构造函数体内进行赋值操作class ABC{ public: ABC(const std::string& name,const std::string& addres,const std::list<PhoneNumber>& phones); privat...原创 2018-11-10 13:13:57 · 5329 阅读 · 0 评论 -
读书笔记(一)
1.如果成员变量或成员函数是依赖具体对象的,就该声明为实例的,否则,如果变量成员函数不依赖于具体对象的,就该声明为静态的(static),静态的可以通过类名来访问,也可以通过对象名来访问。2.成员函数如果不会改变对象的数据域,把const关键字放在函数的结尾, double getArea ( )const;//const类型的成员函数3.若函数不改变传递给它的对象内容,应该给该...原创 2018-10-16 22:52:26 · 117 阅读 · 0 评论