
C/C++程序设计
jim_cainiaoxiaolang
我热爱大数据开发,希望大家多交流
展开
-
STL(标准模板库)(2)
1.在做应用时,如何选择vector和deque(vector和deque有什么区别?在做一个应用的时候,如何选择) 解析: deque称为双向队列容器,表面上与vector非常相似,甚至能在许多实现中直接替代vector。比较deque和vector两者的成员函数,可以发现下面两点。 1)deque比vector多了push_front和pop_front两个函数,而这两个函数都是对于首部进原创 2017-03-19 20:34:36 · 391 阅读 · 0 评论 -
C++部分——C++继承和多态(3)
1.多重继承和虚拟继承的#include <iostream的> 使用命名空间std; 父类{ 市民: 父():NUM(0){COUT <<“父”<< ENDL;} 父(INT N):NUM(N){COUT <<“父(INT)”<< ENDL;} 私人: INT NUM; }; 类Child1:公共父{ 市民: Child1(){COUT <<“Child1()”<< ENDL;}原创 2017-03-15 21:23:24 · 434 阅读 · 0 评论 -
C++-Primer-Plus第6版18个重点笔记
下面是我看《C++ Primer Plus》第6版这本书后所做的笔记,作为备忘录便于以后复习。笔记部分C++的const比C语言#define更好的原因? 首先,它能够明确指定类型,有类型检查功能。 其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中。 第三,可以将const用于更复杂的类型,比如数组和结构。C语言中也有const,其与C++中const的区别是:一是转载 2017-03-16 07:53:45 · 219 阅读 · 0 评论 -
C++编程思想重点笔记(下)
上篇请看:C++编程思想重点笔记(上)宏的好处与坏处宏的好处:#与##的使用 三个有用的特征:字符串定义、字符串串联和标志粘贴。字符串定义的完成是用#指示,它容许设一个标识符并把它转化为字符串,然而字符串串联发生在当两个相邻的字符串没有分隔符时,在这种情况下字符串组合在一起。在写调试代码时,这两个特征是非常有效的。 #define DEBUG(X) cout<<#X " = " << X转载 2017-03-16 07:56:51 · 270 阅读 · 0 评论 -
C++编程思想重点笔记(上)
C和C++指针的最重要的区别在于:C++是一种类型要求更强的语言。就void *而言,这一点表现得更加突出。C虽然不允许随便地把一个类型的指针指派给另一个类型,但允许通过void *来实现。例如: bird* b;rock* r;void* v;v = r;b = v;C++不允许这样做,其编译器将会给出一个出错信息。如果真的想这样做,必须显式地使用映射,通知编译器和读者。参数传递准则转载 2017-03-16 07:55:23 · 401 阅读 · 0 评论 -
C++智能指针简单剖析
导读最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰,一解我以前的多处困惑。C++面试过程中,很多面试官都喜欢问智能指针相关的问题,比如你知道哪些智能指针?shared_ptr的设计原理是什么?如果让你自己设计一个智能指针,你如何完成?等等……。而且在看开源的C++项目时,也能随处看到智能指针的影子。这说明智能指针不仅是面试官爱问的题材,更是非转载 2017-03-16 08:01:29 · 211 阅读 · 0 评论 -
Java编程思想重点笔记(Java开发必看)
1. Java中的多态性理解(注意与C++区分)Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。final方法会使编译器生成更有效的代码,这也是为什么说声明为final方法能在一定程度上提高性能(效果不明显)。如果某个方法是静态的,转载 2017-03-16 08:06:31 · 901 阅读 · 0 评论 -
C++部分——C++面向对象(1)
1.描述面向对象技术的基本概念 面向对象是人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析,设计,实现软件的方法,包括类,对象,消息以及类的特性等方面的内容。2.C++与C语言相比的改进 C++是从C语言发展演变的。C语言是过程式编程语言,它以过程为中心,以算法为驱动。而C++能够使用面向对象的编程方式,即使用以面向对象为中心,以消息为驱动的编程方式。这原创 2017-03-11 19:08:01 · 437 阅读 · 0 评论 -
STL(标准模板库)(1)
STL,即标准模板库,它涵盖了常用的数据结构和算法,并且具有跨平台的特点。将泛型编程思想和STL库用于系统设计中,明显降低了开发强度,提高了程序的可维护性及代码的可重用性。 STL是C++标准函数库的一部分。STL的基本观念就是把数据和操作分离。STL中数据由容器来加以管理,操作则由可制定的算法来完成。迭代器在容器和算法之间充当黏合剂,它使得任何算法都可以和任何容器进行交互运作。STL含有容器,算原创 2017-03-17 08:55:34 · 518 阅读 · 0 评论 -
数据结构(C/C++)(2)
1.编程实现一个单链表的打印void print(node *head){ node *p; int index=0; //链表为空 if(p->next==NULL) { printf("Link is empty\n"); return; } //遍历链表 p=head->next; whi原创 2017-03-25 13:43:27 · 338 阅读 · 0 评论 -
C++部分——C++继承和多态(2)
1.虚函数是怎么实现的简单的说,虚函数是通过虚函数表实现的。那么,什么是虚函数表呢? 事实上,如果一个类中含有虚函数,则系统会为这个类分配一个指针成员指向一个虚函数表(vtbl),表中每一项指向一个虚函数的地址,实现上就是一个函数指针的数组。为了说明虚函数表,请看下面的程序用例:class Parent{public: virtual void fool1(){} virtua原创 2017-03-15 13:17:30 · 328 阅读 · 0 评论 -
结构体和联合体
1.访问结构体成员,声明和初始化结构体 一个结构体是一种能同时处理多种数据类型数据的数据类型。 何时为结构体分配内存? 声明结构体类型时,并不会为结构体分配内存,只有单声明结构体变量时,才会为结构体声明类型。 下面通过实例来理解如何创建一个结构体,如何声明结构体变量,以及如何向结构体变量中读写数据。 eg1:编写一个C程序,创建一个包含多种类型成员的ebill结构原创 2017-03-07 15:09:48 · 334 阅读 · 0 评论 -
C++部分——C++面向对象(2)
1.有哪几种情况只能用intialization list,而不能用assignment(初始化列表和赋值的区别) 无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果都是相同的。不同之处在于,使用构造函数初始化列表初始化数据成员,没有定义初始化列表的构造函数在构造函数体中对数据成员赋值。 对于const和reference类型成员变量,它们只能够被初始化而不能做赋值操原创 2017-03-12 20:58:56 · 313 阅读 · 0 评论 -
STL(标准模板库)(3)
1.vector中的erase方法与algorithm中的remove有什么区别#include<iostream>#include<vector>#include<algorithm>using namespace std;template <class T>void print(vector<T> &a){ //打印容器a中的所有元素 for(vector<T>::it原创 2017-03-23 13:03:05 · 390 阅读 · 0 评论 -
数据结构(C/C++)(1)
1.编程实现一个单链表的建立typedef struct node{ int data;//结点内容 node *next;//下一个节点}node;单链表的创建://创建单链表node *create(){ int i=0;//链表中数据的个数 node *head,*p,*q; int x=0; head=(node *)malloc(si原创 2017-03-23 16:01:07 · 270 阅读 · 0 评论 -
C++部分——C++面向对象(3)
1.构造函数explicit与普通构造函数有什么区别?(explicit构造函数的作用) explicit构造函数是用来防止隐式转换的。 代码如下:class Test1{public: Test1(int n){num=n};//普通构造函数private: int num;};class Test2{public: explicit Test2(int n原创 2017-03-13 21:56:04 · 351 阅读 · 0 评论 -
C++部分——C++面向对象(4)
1.写一个继承类的复制构造函数(对继承类的复制构造函数的理解) 如果基类中没有私有成员,即所有成员都能被派生类访问,则派生类的复制构造函数可以很容易写。但如果基类有私有成员,并且这些私有成员必须在调用派生类的复制构造函数时被初始化,在这种情况下该如何解决? 编写继承类的复制函数有一个原则:使用基类的复制构造函数。这个原则就是解决上述问题的方法。#include<iostream>using n原创 2017-03-14 14:12:22 · 327 阅读 · 0 评论 -
C++部分——C++面向对象(5)
1.为什么C语言不支持函数重载而C++支持?(什么是函数重载?为什么C语言不支持函数重载?而C++能支持函数重载?) 函数重载是用来描述同名函数具有相同或者相似的功能,但数据类型或者是参数不同的函数管理操作。 函数名经过C++编译器处理过后包含了原函数名,函数参数数量及返回类型信息,而C语言不会对函数名进行处理。2.重载和覆写有什么区别重载是编写一个与已有函数同名但是参数表不同(参数数量或参数类原创 2017-03-14 16:49:27 · 228 阅读 · 0 评论 -
C++部分——C++继承和多态(1)
1.C++类继承的三种关系(对C++类继承的三种关系的理解) C++中继承主要有三种关系:public,protected,和private。 1)public继承 public继承是一种接口继承,子类可以代替父类完成父类接口所声明的行为。此时子类可以自动转换成为父类的接口,完成接口转换。从语法角度来说,public继承会保留父类中成员(包括函数和变量等)的可见性不变,也就是说,如果父类中的某原创 2017-03-14 21:29:39 · 334 阅读 · 0 评论 -
C专家编程——1.穿越时空的迷雾
任何人都可以享受编程。1.计算机日期关于time_t,什么时候它会到达尽头,重新回到开始呢?#include<stdio.h>#include<time.h>int main(){ time_t biggest=0x7FFFFFFF; printf("biggest = %s \n",asctime(gmtime(&biggest))); return 0;}2.编译器设原创 2017-03-17 12:57:02 · 287 阅读 · 0 评论