- 博客(27)
- 收藏
- 关注
转载 (转)构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数
构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 ...
2019-04-28 20:01:39 472 1
转载 Effective C++ 2e 条款7:预先准备好内存不够的情况
条款7:预先准备好内存不够的情况 operator new在无法完成内存分配请求时会抛出异常(以前的做法一般是返回0,一些旧一点的编译器还这么做。你愿意的话也可以把你的编译器设置成这样。关于这个话题我将推迟到本条款的结尾处讨论)。大家都知道,处理内存不够所产生的异常真可以算得上是个道德上的行为,但实际做起来又会象刀架在脖子上那样痛苦。所以,你有时会不去管它,也许一直没去管它。但你心里一定还是深...
2019-04-02 16:46:43 389
原创 插入排序
在算法导论中的模板:(升序)for j=2 to A.length key = A[j] i = j - 1 while i>0 and A[i]>key A[i+1] = A[i] i = i - 1 A[j+1] = key 然后,在C++里试了下:#include<iostream>...
2019-03-22 16:23:33 157
转载 (转载)传指针和传指针引用的区别/指针和引用的区别(本质)
传指针和传指针引用的区别/指针和引用的区别(本质)转自:http://blog.sina.com.cn/s/blog_673ef8130100imsp.html指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形...
2019-03-22 15:19:16 176
转载 (转载)C++中栈区 堆区 常量区(由一道面试题目而学习)
C++中栈区 堆区 常量区(由一道面试题目而学习)2009-04-28 21:01 #include<iostream.h>void main(){char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。cons...
2019-03-21 00:01:47 168
转载 Centos7通过yum安装最新MySQL(亲测有效)
一:去官网查看最新安装包https://dev.mysql.com/downloads/repo/yum/二:下载MySQL源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySql源yum -y install mysql57-community-release-...
2019-03-19 16:58:27 5345
转载 new 和 malloc 的区别
大概整合了下,有以下几个方面:一、属性 new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持。二、参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。三、返回类型 new操作符内存分配成功时,返回的是对象类型的指...
2019-03-03 21:34:35 141
转载 C++ 面向对象基本概念
/* 类和对象 */1. 对象客观世界中任何一个事物都可以看成一个对象(object)。对象可大可小。对象是构成系统的基本单位。任 何 一 个 对 象 都 应 当 具 有 这 两 个 要 素 , 即 属 性 (attribute) 和 行 为(behavior),它能根据外界给的信息进行相应的操作。2. 封装与信息隐蔽可以对一个对象进行封装处理,把它...
2019-03-03 18:19:32 987
转载 _Effective_C++_条款四十九:了解new_handler的行为(转载)
转载自https://www.cnblogs.com/jerry19880126/p/3722531.html读书笔记_Effective_C++_条款四十九:了解new_handler的行为本章开始讨论内存分配的一些用法,C/C++内存分配采用new和delete。在new申请内存时,可能会遇到的一种情况就是,内存不够了,这时候会抛出out of memory的异常。有的时候,我们希望能...
2019-02-02 16:46:04 169
原创 高性能服务器(基于TCP实现基本的加减乘除等运算)
calc.h#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>typedef enum {QUIT, ADD, SUB, MUL, DIV, MODE}ENUM_CAL_T...
2019-01-23 21:56:08 1425
原创 SOCKET----TCP & UDP
关于TCP,UDP这块其实就是下面这几个步骤:(左边的是服务器的,右边是客户端的)务必注意两者的区别!!TCP:utili.h#include<stdio.h>#include<unistd.h>#include<sys/socket.h>#include<string.h>#include<stdlib.h>...
2019-01-23 21:02:07 165
原创 进程间通信-----读写锁
pthread_rwlock.h书上的源码是pthread, 但实际上应用时要改成别的名字,为了防止跟系统冲突比如 my_pthread: #pragma once#include<stdlib.h>#include<unistd.h>#define EINVAL -1#define EBUSY -2typedef struct { pt...
2019-01-23 19:59:16 307
原创 Linux之共享内存shm
shm.h #include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<sys/ipc.h>#include<sys/sem.h>#include<sys/shm.h>union semun{ int val; str...
2019-01-17 22:04:51 647
原创 Linux 之 System V信号量
其实就是学几个函数的用法:ftok(), semget() , semctl(), semop() 如果对哪个函数不熟悉就man 一下,例如man semctl()下面是几个函数简单的实现代码,自己可以实现一下,助于理解...sem.h:对相应的系统函数”包装“,便于使用,例如Ftok()对应于系统里的ftok();//////sem.h#include<st...
2018-11-30 20:20:09 354
原创 Linux进程间通信之有名管道和无名管道
(无名)管道pipe有以下几个注意的:1.管道只能两个进程单向通信,数据只能从一个进程流向另一个进程(其中管道一端用写数据,另一端读)即半双工管道;2.只能用于有亲缘关系的进程间;3.是通过创建管道时,系统设置的文件描述符进行的。管道就是一个特殊的文件,这个文件只存在于内存中。在创建管道时系统会为管道分配一个页面作为数据缓冲区,进行管道通信的两个进程通过读写这个缓冲区来进行...
2018-11-13 16:53:38 612
原创 Linux中wait()函数
编程过程中,有时需要让一个进程等待另一个进程,最常见的是父进程等待自己的子进程,或者父进程回收自己的子进程资源包括僵尸进程。这里简单介绍一下系统调用函数:wait()函数原型是#include <sys/types.h>#include <wait.h>int wait(int *status)函数功能是:父进程一旦调用了wait就立即阻塞自己,由...
2018-11-10 22:50:53 67887 6
转载 (转载)Linux下getopt()函数的使用
Linux下getopt()函数的简单使用步入正题:我们的主角----getopt()函数。英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。 再来看一下这家伙的原型(不是六耳猕猴):int getopt(int argc,char * const argv[ ],const char * opt...
2018-11-01 20:49:34 135
原创 CentOS7网络源配置yum
以下步骤均得保证你的系统能连外网:即 ping www.baidu.com 能出现回复第一步:下载yum源配置文件下载地址:http://mirrors.163.com/.help/CentOS7-Base-163.repo即 cd /etc/yum.repos.d然后 wget http://mirrors.163.com/.help/CentO...
2018-10-29 18:46:59 1975
转载 (转载)C++中基类的析构函数为什么要用virtual虚析构函数
知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定。 关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定、虚函数、多态实现正题 直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函...
2018-10-29 17:55:56 134
原创 vector/string以及范围for循环
#include <iostream>#include <vector>//必须包含vector的头文件;就如当用到string时也应该有#include<string>一样;using namespace std;int main(){ vector<int> v = { 0,1,2,3,4,5,6,7,8,9 }; for (aut...
2018-02-02 20:15:49 1743
原创 求10个数平均值(数组)
#include <iostream>using namespace std;int main(){ float average(float array[]); float a[10], m; cout<<"please enter 10 numbers:"<<endl; for(int i = 0; i < ...
2018-01-22 22:04:07 11475
原创 数组元素倒置(指针做参数,数组名做参数)
数组元素倒置废话不多说,直接看代码:1.指针做参数#include <stdio.h>int main(){ void inv(int *x,int n);//函数声明 int i; int a[10]={3,4,8,15,78,46,25,12,18,16}; printf("The original array:\n"...
2018-01-20 12:56:20 3571
原创 初学指针(输入两个整数,由大到小输出)
#include <iostream>using namespace std;int main(){ void Swap(int *p1, int *p2); int a, b; cout<<"please enter a and b"<<endl; cin>>a>>b; int *...
2017-12-08 09:32:07 5045 2
原创 9*9乘法表
#include <iostream>using namespace std;void main(){ for(int i = 1; i < 10; ++i) { for(int j=1;j<=i;++j) { cout << j << "*"<< i <&l
2017-12-02 13:25:07 226
原创 数组排序
#include <iostream>using namespace std;void Sort(int ar[], int n){ for(int i = 0; i < n-1; ++i) { for(int j = 0; j < n-i-1; ++j) { if(ar[j] < ar[j+1]) { int tmp = ...
2017-12-02 11:43:41 216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人