
C++
文章平均质量分 71
yuanyuanprince
这个作者很懒,什么都没留下…
展开
-
《C++primer》读书笔记一 类
12.1 类的定义和声明 一个类可以包含若干公有的、私有的和受保护的部分。在public中定义的成员可被使用该类型的所有代码访问;在private部分定义的成员可被其他类成员访问。在类内部定义的函是数默认为inline。const成员不能改变其所操作的对象的数据成员。const必须同时出现在声明和定义中,若只出现在其中一处,就会出现编译错误。将类定义放在头文件中,可以保证在每个原创 2012-05-08 21:01:27 · 402 阅读 · 0 评论 -
构造,复制,赋值,析构
#includeusing namespace std;class A{public: A(int t=0):data(t){cout<<"constructor!"<<endl;} //explicit A(int t=0):data(t){cout<<"constructor!"<<endl;} A(const A &a) { data=a.data;原创 2012-05-18 10:48:08 · 274 阅读 · 0 评论 -
数据结构与算法分析 树
由后缀式构造二叉表达树,前序遍历是前缀式,中序遍历是中缀式,后序遍历是后缀式#include#includeusing namespace std;templatestruct BinaryNode{ Object data; BinaryNode *left; BinaryNode *right; BinaryNode(const Object & x,BinaryN原创 2012-06-04 15:33:12 · 595 阅读 · 0 评论 -
智能指针
#includeusing namespace std;/*智能指针类*//*每次创建类的新对象时,初始化指针并将使用计数置为1当对象作为另一个对象的副本而创建时,复制构造函数复制指针并增加与之相应的使用计算器的值对一个对象进行赋值时,赋值操作符减少左操作数所指对象的使用计数的值,如果减至0则删除对象,并增加右操作数所指对象的使用计数的值。最后调用析构函数,析构原创 2012-05-18 14:05:28 · 251 阅读 · 0 评论 -
c++面试题整理(三)
29.struct 和 class 的区别答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和 class 在其他方面是功能相当的。从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方转载 2012-05-20 15:16:22 · 544 阅读 · 0 评论 -
c++面试题整理(一)
1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消转载 2012-05-20 09:16:26 · 547 阅读 · 0 评论 -
c++面试题整理(二)
13.“引用”与多态的关系?引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。例4Class A; Class B : Class A{...}; B b; A& ref = b;14.“引用”与指针的区别是什么?指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的转载 2012-05-20 14:10:20 · 408 阅读 · 0 评论 -
Essential c++,泛型编程风格读书笔记
#includeusing namespace std;/*数组作为函数参数传递的处理办法,数组长度或哨兵*/templatetype *find(type *arr,int size,const type & value){ for(int i=0;i!=size;i++) if(arr[i]==value) return &arr[i]; return 0;}t原创 2012-06-06 21:09:38 · 607 阅读 · 0 评论 -
C++的四种cast操作符的区别
Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:代码:int i;double d;转载 2012-05-20 15:25:58 · 478 阅读 · 0 评论 -
c++面试题整理(四)
43. 分析一下这段程序的输出 (Autodesk)#includeusing namespace std;class B{public: B(){ cout<<"default constructor"<<endl; } ~B(){ cout<<"destructed"<<endl; } B(const B& b){ data=b.d转载 2012-05-20 22:29:32 · 518 阅读 · 0 评论 -
Queue模板类
#includeusing namespace std;/*友元类的前向声明*/templateclass Queue;/*友元函数的前向声明*/templateostream & operator &q);/*结点,包括数据,和指针*/templateclass QueueItem{ friend class Queue; friend ostream& oper原创 2012-06-12 22:54:05 · 1725 阅读 · 0 评论 -
顺序容器练笔
#include#include#includeusing namespace std;templatevoid print(T t1,T t2){ while(t1!=t2) cout<<*t1++<<" "; cout<<endl;}int main(){ int num[]={1,2,3,4,5,6,7,8}; size_t si原创 2012-05-24 11:36:34 · 618 阅读 · 0 评论 -
表,栈,队列程序代码片段
#include#includeusing namespace std;template void printLots(const list & L,const list & P){ list::const_iterator iter1=L.begin(); list::const_iterator iter2=P.begin(); int start=1; for(;iter原创 2012-06-02 21:59:45 · 571 阅读 · 0 评论 -
基于栈的平衡符号匹配问题
栈的实现基于vector顺序容器的栈的实现#ifndef WEIWEI_H#define WEIWEI_H#includeusing std::vector;templateclass Stack{public: Stack(int val=-1):topOfStack(val){} void push(const object& val) {原创 2012-06-02 00:17:16 · 566 阅读 · 0 评论 -
四种求最大子序列和问题的解
#include#includeusing namespace std;int maxSubSum1(const vector &a){ int maxSum=0;/*记录最大子集和*/ /*枚举所有出现的子集*/ for(int i=0;i!=a.size();i++)/*保证n趟遍历*/ { for(int j=i;j!=a.size();j++)/*原创 2012-06-01 17:15:26 · 493 阅读 · 0 评论 -
泛型算法练笔
#include#include#includeusing namespace std;int main(){ int data; vector vec; while(cin>>data) vec.push_back(data); cout<<"请输入参数:"; int num; cin.clear(); getchar(); cin>>n原创 2012-05-27 11:49:03 · 359 阅读 · 0 评论 -
《c++primer》读书笔记二 复制控制
复制构造函数是一种特殊的构造函数,具有单个形参,该形参(常用const修饰)是对该类型的引用。1.当定义一个新对象并用一个同类型的对象对它进行初始化时,将显示使用复制构造函数;2.当将该类型的对象传递给函数或从函数返回该类型的对象时,将隐式使用复制构造函数。当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。析构函数可用于释放对象构造时或在对象生命期中所获取的资源。不管类是否原创 2012-05-09 20:08:22 · 352 阅读 · 0 评论 -
《c++primer》读书笔记三 重载操作符与转换
Hello World!以后再写原创 2012-05-11 17:01:08 · 281 阅读 · 0 评论 -
泛型编程
#include#include#include#includeusing namespace std;templateT1& print(T1 &s,const T2 &val){ s<<val; return s;}int main(){ string str="Hello World",desstr; ostringstream原创 2012-05-29 14:22:09 · 351 阅读 · 0 评论 -
数据结构与算法分析 感悟
#include#include#include#include#includeusing namespace std;const int & findMax(const vector &vec){ size_t max=0; for(size_t i=1;i!=vec.size();i++) { if(vec[i]>vec[max])原创 2012-05-29 08:48:55 · 726 阅读 · 0 评论 -
复数类的实现
#ifndef __EXAMPLE__#define __EXAMPLE__#includeusing namespace std;class Complex{public: Complex(double i=0,double j=0):data1(i),data2(j){} Complex(const Complex& c):data1(c.data1)原创 2012-05-12 16:08:27 · 507 阅读 · 0 评论 -
类与数据抽象
#include#include#include#includeusing namespace std;class Employee{public: Employee():name("NoName") { setId(); } Employee(string n):name(n) { setId(); } Employee原创 2012-05-31 21:33:16 · 379 阅读 · 0 评论 -
重载自增与自减操作符
#include#include using namespace std;class CheckedPtr{public: CheckedPtr(int *b,int *e):beg(b),end(e),curr(b){}/*无默认构造函数,需绑定某对象*/ CheckedPtr& operator++();//前缀 C原创 2012-05-13 10:33:43 · 1647 阅读 · 0 评论 -
调用操作符和函数对象
#includeusing namespace std;class absInt{public: int operator()(int val)/*函数调用操作符*/ { return val<0?-val:val; }};int main(){ int i=-41; absInt absObj; int ui=absObj(i); c原创 2012-05-13 12:41:36 · 661 阅读 · 0 评论 -
关联容器练笔
#include#include#include#includeusing namespace std;int main(){ string first; int second; pair t; vector > vec; while(cin>>first && cin>>second) { /*版本一*/ /*t=make_pair(原创 2012-05-25 09:42:56 · 480 阅读 · 0 评论