随笔分类 - c++学习
摘要:通常会考虑结构体变量的内存分配问题,结构体的内存分配涉及到内存对齐。 关于内存对齐,详见:https://blog.csdn.net/grantxx/article/details/7577730/。
阅读全文
摘要:原创帖子见:https://blog.csdn.net/sevenjoin/article/details/82222895 我们知道,构造方法是用来初始化类对象的。如果在类中没有显式地声明构造函数,那么编译器会自动创建一个默认的构造函数;并且这个默认的构造函数仅仅在没有显式地声明构造函数的情况下才
阅读全文
摘要:关于虚函数 核心:虚函数是实现多态机制的核心——通过基类访问派生类,访问过程在程序运行时动态确定。 虚函数 使用基类指针或者引用访问派生类;使用类指针调用成员函数时,普通函数由指针类型确定,而虚函数由指针指向的实际类型决定。 虚函数调用详细过程: 上述说到:虚函数的访问过程在程序执行过程中动态确定,
阅读全文
摘要:(C++)浅谈多态基类析构函数声明为虚函数 主要内容: 1、C++类继承中的构造函数和析构函数 2、C++多态性中的静态绑定和动态绑定 3、C++多态性中析构函数声明为虚函数 1、C++类继承中的构造函数和析构函数 在C++的类继承中, 建立对象时,首先调用基类的构造函数,然后在调用下一个派生类的构
阅读全文
摘要:C++中的static关键字的总结 目录 C++中的static关键字的总结 1.面向过程设计中的static 1.1静态全局变量 1.2.静态局部变量 为什么需要静态局部变量 1.3静态函数 2、面向对象的static关键字(类中的static关键字) 2.1静态数据成员 2.2静态成员函数 C+
阅读全文
摘要:很多时候,我们需要把int转化成srting(比如判断一个数是不是回文数);或者将string 转化为int(比如将一个string输入的数字转化为int) 原文博客: https://www.cnblogs.com/smile233/p/8379802.html 总结: 1.将 数字类型 转化为
阅读全文
摘要:我评价自己的C++水平还未入门的确不够准确,应该是远远未入门。 感叹自己看书的时候如此粗心,C++Coder最基本的placement new的知识,今天才明白。 如何在new一个对象的时候,使对象的空间并不在堆上分配,而是由使用者传入一个缓冲区给对象使用,且编译期会自动调用对象的构造函数? new
阅读全文
摘要:通常,当我们定义:一个字符串时候,会采用下面两种方式: 1 char str[] = “hello world!” 2 char* str = “hello world!” 通常我们会认为上面两行代码表达的含义是相同的,甚至完全等价。 我们看下面一段代码: 1 int main() 2 { 3 ch
阅读全文
摘要:1 #include <iostream> 2 #include <string> 3 #include <set> 4 #include <map> 5 #include<vector> 6 using namespace std; 7 8 int main() 9 { 10 set<int> s
阅读全文
摘要:关于多进程创建,此处只讲解一个函数fork(). 1.进程创建 先上代码: 运行结果: 程序及结果分析: 程序分析: pid = fork();//执行fork的时候到底发生了什么? 这行代码到底发生了什么?我们需要清楚:在这行代码执行之前,如果不考虑系统调用这个层次的进程,那么就只有一个进程,就是
阅读全文
摘要:我们在编程的时候,无可避免要申明变量,在这个变量可以是在()中,可以在{}中,也可以直接在外面,也可以用new的方式.那么当我们在申明变量的时候,实质上我们所做的工作是:关联了一个内存模型! 上代码: 我们分析上面程序中的三个典型变量:zhangsan,lisi(在main函数中的),以及第七行的m
阅读全文
摘要:上一次讲述了多线程编程,但是由于线程是共享内存空间和资源的,这就导致:在使用多线程的时候,对于共享资源的控制要做的很好。先上程序: 上面一段程序,在main进程中创建了两个子线程t1,t2。对各个子线程的cout输出流进行了加锁,完了又对锁进行了释放。 其结果如下: 可见:线程t1,t2是交替执行的
阅读全文
摘要:c++多线程并发可以帮助我们挖掘CPU的性能,在我们的思想中,似乎程序都是顺序执行的。这样的结论是建立在:程序是单线程程序。(比如我们平时写的hello world程序)。 但是如果程序是多线程的。那么这个结论就不成立了。先上代码: 程序中: #include <thread>包含了线程类threa
阅读全文
摘要:本文为转载:https://www.cnblogs.com/zeppelin5/p/10083597.html,对作者有些地方做了修正。 手写代码是理解C++的最好办法,以几个例子说明C++四个智能指针的用法,转载请注明出处。 一、auto_ptr auto_ptr这是C++98标准下的智能指针,现
阅读全文
摘要:函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性。函数对象的本质:()运算符的重载。我们通过一段代码来感受函数指针和函数对象的使用: 我们可以看到:函数AddFunc和类Add本质上都是实现了对a+b的加法运算。从功能上讲,两者并无区别,但从设计上讲,两者的区别很大,一
阅读全文
摘要:函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性。 函数对象的本质:()运算符的重载。我们通过一段代码来感受函数指针和函数对象的使用: 我们可以看到:函数AddFunc和类Add本质上都是实现了对a+b的加法运算。从功能上讲,两者并无区别,但从设计上讲,两者的区别很大,
阅读全文
摘要:当继承和动态内存分配的问题交织在一起的时候,我们考虑类实现的时候,就需要考虑更多的东西,先上代码: 上述类声明中,定义了一个基类BaseDMA,以及由该基类衍生的两个子类:LackDMA,HasDMA;其中,LackDMA类不涉及动态内存分配,HasDMA涉及动态内存分配。关于所涉及的其他知识细节,
阅读全文
摘要:多态性是面向对象程序设计的又一个重要思想,关于多态的详尽描述,请看本人的收藏https://www.cnblogs.com/hust-ghtao/p/3512461.html。这篇博文中,详尽的探讨了多态的一些特性。 在此,我仅仅以白话的方式描述为何要引入多态: 子类继承了基类的方法,但子类可以改变
阅读全文
摘要:继承是面向对象的一种很重要的特性,先来复习基类的基本知识: 先上一段代码: 先复习基本知识: 1 # ifndef TABLE00_H...# endif 表明:如果之前没有定义TABLE00_H段,则编译# ifndef TABLE00_H...# endif之间程序段,否则不编译,这 能够避免一
阅读全文