对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。 cla...
运算符分为:算数运算符、赋值运算符、比较运算符、逻辑运算符算数运算符:+(正) -(负) + - * / % i++(先赋值后自增) ++i(先自增后赋值) i--(先赋值后自减) --i(先自减后赋值)赋值运算符:= += -= *= /= %=比较运算符:== != < > <= >=逻辑运算符:!(非) &&(与) ||(或)原文:https://www.cnblogs.com/xiximayou/p/12079565.html
//不使用if,:?等推断语句。求两个数字中最大的那个数字。#include<iostream>
using
namespace
std;int main()
{int a = -
10;int b = -
100;int c = (a + b +
abs(a - b))/
2;//abs(x)是求绝对值的函数,a+b+(a与b的差值)就是最大数的两倍,再除以2即为最大数。
cout << c << endl;return
0;
}
#include <iostream>usingnamespacestd;
int main()
{int a = 10;int b = 100;int c = a - b;//int sr[] = { a, b };int i = unsi...
//输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
//例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
//则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. #include <iostream>
using namespace std;
void Grial(int (*a)[5],int n)
{int a1 = 0;int b1 = n-1;bool visted[n][n];for(int k=0;k<n;k++){for(int m=0;m<n;m++){visted[k][m]=false;}}int i=0;int j=0;while(1){for(i=a1...
结构体是用户定义的类型,而结构声明定义了这种类型的数据属性。1struct inflatable // structure declaration2{
3char name[20];
4float volume;
5double price;
6 };关键字 struct 表明,这些代码定义的是一个结构体的布局。标识符 inflatable 是这种数据格式的名称,因此新类型的名称为 inflatable。这样,便可以像创建 char 或 int 类型的变量那样创建 inflatable 类型的变量类。struct inflatable goose; // keyword struct ...
一、网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类:1、消息传递(管道、FIFO、消息队列)2、同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量)3、共享内存(匿名的和具名的)4、远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一...
转自:http://blog.csdn.net/chenzujie/article/details/7011639 先来看两段小程序:
1)、
#include <iostream.h>
#include <String.h>
void main(void)
{
char *str1 = "just have fun";
char *str2 = "happy day";
char *sTmpPtr = newchar[255];
char *sMyStrPtr = newchar[255];strcpy(sTmpPtr, str1);
strcpy(sMyStrPtr, str2);
delete sMyStrPtr ;
strcpy(sMyStrPtr, sTmpPtr);
cout << sMyStrPtr << endl;
}
2)、
#incl...
原文链接:http://www.cnblogs.com/hanxi/archive/2012/07/25/2608068.html 前几天很不爽,因为C++中两个类中互相包含对方对象的指针编译时提示某一个类未定义。。。所以我就想啊想,这样也对,我的头文件都有#ifndef的,包含了一次就不能再包含了,以为就实现不了这样的功能,于是就改了设计方案:class A
{
public:A(B* pB):m_pB(pB){}private:B* m_pB;
};class B
{
public:B() {}
private:int m_i;
};只在一个类中包含另一个...
常见的数据类型,bit,byte,char,short,int,long,float,double,BYTE,WORD,DWORD,数组,指针,引用,对象常见的操作符,<<,>>,=,++,new,delete;面向对象的特性,封装(class、function),继承(public、protected、private),多态(virtual);具有重要意义的修饰符,const ,static,external;内存的存储空间结构;原文:https://www.cnblogs.com/cui-shaoqiang/p/9088934.html
#include <iostream>
usingnamespace std;//插入排序法void insertSortMethod(int intArr[],int arrLen);
void printArrInfo(int intArr[],int arrLen);
int main()
{int arr[] = { 1,3,5,2,4,7,9,6,8 };int len = sizeof(arr) / sizeof(int);insertSortMethod(arr,len);printArrInfo(arr,len);system("pause");return0;
}
//插入排序法void insertSortMethod(int intArr[],int arrLen)
{int start = 0;for (int i = 0; i < arrLen...
C++获取当前时间和计算程序运行时间的方法
获取当前时间:
#include <iostream>
#include <Windows.h> using namespace std; int main() { SYSTEMTIME sys; GetLocalTime(&sys); cout<<sys.wYear<<"年"; cout<<sys.wMonth<<"月"; cout<<sys.wDay<<"日"; cout<<sys.wHour<<"时"; cout<<sys.wMinute<<"分"; cout<<sys.wSecond<<"秒"; cout<<sys.wMilliseconds<<"毫秒"; cout<<",星期"<<sys.wDayO...
关于顶层const 底层constconst与指针配合使用有两种作用,一是限制指针变量,二是限制指针变量指向的数据限制指针变量本身1 int * const p2;//const修饰的是指针变量限制指针变量本身的意思是,指针变量本身的值不能被修改,所以被 const 修饰的指针变量指针只能在定义时初始化,不能定义之后再赋值,错误代码如下限制指针变量指向的数据1 const int *p1;
2 int const *p1;上面两种写法都可以,一般使用第一种,限制指针变量指向的...
哈希表(hash table):图书馆(图书分类):-->A-1-->A-2-->A-3-->A-4-->B-1-->B-2-->B-3-->B-4-->C-1-->C-2-->C-3-->C-4……医院(病例分类):-->A-1-->A-2-->A-3-->A-4-->B-1-->B-2-->B-3-->B-4-->C-1-->C-2-->C-3-->C-4……大型超市supermarket(条码分类):-->A-1-->A-2-->A-3-->A-4-->B-1-->B-2-->B-3-->B-4-->C-1-->C-2-->C-3-->C-4……原文:http://my.oschina.net/u/2517253/blog/531658
项目二:数组选择#include<iostream>
using namespace std;
int main()
{ const int N=10; int A[N],B[N],i,j,k=0; cout<<"从键盘中输入十个数"<<endl; for(i=0;i<N;i++) cin>>A[i]; for(i=0;i<N;i++) { for(j=0;j<N;j++) { if(i==j) continue; if(A[i]==A[j]) break; if(j==N-1) { B[k]=A[i]; k++; } } } cout<<"数组B为:"; for(i=0;i<k;i++) cout<<B[i]<<" "; return 0;
} 项目四:字串符#inc...
类型转化也许大家并不陌生,int i; float j; j = (float)i; i = (int)j; 像这样的显式转化其实很常见,强制类型转换可能会丢失部分数据,所以如果不加(int)做强制转换,严检查的编译会报错,宽检查的编译会报warning。在C语言中,指针是4字节或者8字节的,所以指针之间的强制转换在转换的时候就如同不同的整数类型之间的赋值,问题在于对该指针的使用上,必须确保该指针确实可以做出这样的强制转换。常见的情况是void*到不同的指...