C++
文章平均质量分 68
会飞的鱼_fly
这个作者很懒,什么都没留下…
展开
-
C++运算符重载——输入/输出运算符
为了与IO标准库一致,重载输入输出运算符函数的第一个行参应该是流的引用,第二个行参是对象的引用。如果重载为类的成员函数,第一个行参应该是对象的引用,第二个行参是流的引用。使用方式是 ClassObj << cout 这样与标准IO库就不一致了,所以输入输出运算符不能重载为类的成员函数,可以重载为类的友元函数和普通函数。通常重载输出运算符<<的第二个形参是const的,因为输出一个类不许要更改它;但是转载 2016-12-04 15:29:13 · 861 阅读 · 0 评论 -
c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[])argv为指针的指针argc为整数 char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示只有一程序名称。argc只有一个元转载 2017-06-05 09:52:26 · 401 阅读 · 0 评论 -
C++ 预处理、编译、汇编、链接
一个C++程序一般需要经过以下几个步骤才能成为可执行程序:那么,在以上的每一步中,编译器到底做了哪些工作呢?一、编译器预处理C++编译器自带预处理器,在程序编译之前,由预处理器对C++源程序完成预处理工作。预处理主要将源程序中的宏定义指令、条件编译指令、头文件包含指令以及特殊符号完成相应的替换工作。预处理指令#include用于包含头文件,有两种形式:#include <xxx.h>,#in转载 2017-06-06 17:05:21 · 1556 阅读 · 2 评论 -
系统调用和库函数及API的区别
转载原文:http://blog.csdn.net/gogokongyin/article/details/51303624 在写程序的过程中,像MFC,VC++这些编程,都会涉及到函数的调用,有库函数也有系统函数,下面看一看它们的区别!! 系统调用(system call)和库函数调用(Library function call)的区别?转载 2017-06-19 09:45:02 · 8073 阅读 · 0 评论 -
c++空类实例大小不是0原因
初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却 大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经验,是编译器这方面的一个具体功能. 首先:我们要知道什么是类的实例化,所谓类的实例化就是在内存中分转载 2017-06-19 17:21:09 · 290 阅读 · 0 评论 -
类内定义的成员函数是内联函数
之前看书的时候没有注意到这点,今天再翻primer发现了这句话,感觉好神奇,特意来做个笔记!在类内定义的成员函数默认为inline,不论前面是否加了inline,当然,是否内联还是取决于编译器啦~而在类外定义的成员函数就不是内联函数。原创 2017-06-13 08:43:58 · 11331 阅读 · 2 评论 -
数组指针与指针数组
指针数组和数组指针的概念非常容易混淆,今天在这里整理一下。先看一下二者的定义:数组指针:int (*p)[4]; //p是指向数组的指针,本身是一个指针。指针数组:int *q[4]; //q是一个包含4个元素的数组,每个元素是一个int型的指针。接下来通过代码感受一下:#include using namespace std;int main(){原创 2017-06-13 17:05:06 · 302 阅读 · 0 评论 -
"undefined reference to" 问题解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)转载 2017-08-31 21:36:20 · 4377 阅读 · 1 评论 -
C++中使用转换构造函数和运算符重载时需要注意的问题
作为一个c++初学者,今天在学习这部分时,自己动手敲代码的时候发现同时使用转换构造函数和运算符重载时,运算符重载函数的形参不能为引用,刚开始没注意到这个问题,编译一直不通过,debug了好半天才发现问题出在引用那里。。。原创 2016-10-30 17:53:12 · 1148 阅读 · 1 评论 -
数组中重复的数
题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。思路1:用交换的思想。遍历数组,将它们都各自放回属于自己的位置。判断第i个位置的元素tmp是否和i相等,相等则继续遍原创 2017-05-12 21:59:51 · 403 阅读 · 0 评论 -
数组中只出现一次的数
题目1:一个数组中,除了某一个只出现过一次的数字外,其余数字均出现过2次,找出这个只出现了一次的数字。思路:分析题干,发现强调了数组中数字出现的次数为1和2,则可以想到异或运算,两个相同的数字异或结果为0,相同的数异或的结果为其本身,且异或运算存在交换律和结合律,即a^b^a=b, b^a^a=b。那么利用异或运算的这些性质即可求解本题:依次将数组的每个数进行异或运算,异或的结果即为所求。原创 2017-05-03 22:10:13 · 435 阅读 · 0 评论 -
C++ 输入函数 cin>>、cin.getline()和cin.get()区别
在字符串输入中,常用到cin,cin.getline()和cin.get()函数。cin>>通常只能读取一个单词。cin.getline()和cin.get()可以读取固定长度的字符串,含空格等符号。一、使用cin函数由于cin通过空格、制表符、换行符来界定字符串的。故cin在获取字符时只读取一个单词长度,对于有空格的字符串其空格后面字符读不了。例如:读取姓名#include <iostr转载 2016-12-26 20:35:57 · 367 阅读 · 0 评论 -
堆、栈知识点
学习堆、栈和堆栈。。。。。。。要点: 堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放**函数的参数值,局部变量的值**等。其操作方式类似于数据结 构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可 在计算机领域,堆栈是转载 2016-12-19 20:02:28 · 535 阅读 · 0 评论 -
【面试】八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的转载 2017-02-03 19:28:44 · 306 阅读 · 0 评论 -
把数组排成最小的数
刚开始做这道题时没有理解算法的含义,搞了好久才发现是理解偏了,主要原因是我没有理解透sort函数里比较函数的作用,它相当于是按程序员的需求重新定义比较规则,比如这道题就是要重定义比较整数a和b的比较规则,即:若ab >ba, 则 a > b; 否则 a class Solution {public:/*思路: 将数组中的数按定义的排序方式进行排序,即:若ab >ba, 则 a > b; 否原创 2017-04-28 12:01:41 · 267 阅读 · 0 评论 -
STL sort算法中的比较函数
排序,既陌生又熟悉的名词。排序,成为面试官中喜欢问的算法问题。c++ STL中为我们提供了std::sort, 所以今天我们不是来描述各种排序算法的实现,而是看看怎么使用stl为我们提供的sort。先预热,代码:#include #include #include int main(){ int test_arr[5]; test_arr[转载 2017-04-28 16:44:48 · 458 阅读 · 0 评论 -
C++创建单链表
今天整理了一下创建链表的代码,我主要使用了尾插法,因为头插法插入的数据是倒叙的,所以我不常用,且原理和尾插法一样,所以这里只给出尾插法。尾插法需要定义一个尾指针ptail,始终指向链表的尾端p,每次新插入结点时,都使用这个尾指针指向新插入的结点,即ptail->next=pnew,然后将尾指针更新为pnew,即ptail=p。如此循环。先给出一个没有头指针的创建方法(头指针即第一个结点原创 2017-04-09 18:27:33 · 10776 阅读 · 3 评论 -
c++实现单例模式--单线程环境
这篇博客就先从设计模式的单例模式说起,自己动手写了一个用c++实现的单线程环境下的单例模式,略抒薄见,望大神不吝赐教!原创 2017-04-08 14:39:08 · 1773 阅读 · 0 评论 -
浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2017-05-03 16:20:14 · 221 阅读 · 0 评论 -
虚继承的概念
C++中虚拟继承的概念为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。class 派生类名:virtual 继承方式 基类名virtual是关键字,声明该基类为派生类的虚转载 2017-09-01 10:44:47 · 254 阅读 · 0 评论