![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
CPP
文章平均质量分 64
CCMPI
这个作者很懒,什么都没留下…
展开
-
CPP-constant object & pointer this
1: 常对象(constant objects) 对象通常是指类型为类的一种变量。我们已知可以声明常变量和函数参数,这对类也适用。如:const Clock ck;如果试图调用一个成员函数去改变常对象:ck.tick(); //error或者,如果调用一个有指针或引用(reference)指向可变的Clock作为参数:void f1(Clock *cp);void f2(Clock& cr);翻译 2015-09-24 04:20:30 · 465 阅读 · 0 评论 -
CPP-vector erase while looping
从一个vector 删除元素:#include <vector>#include <iostream>using namespace std;int main(){ std::vector<double> myDouble; std::vector<double> ::iterator it; for(int i=1;i<11;i++){myDouble.push_ba原创 2016-02-11 08:25:11 · 632 阅读 · 0 评论 -
CPP-static members
某些情况,一个类中所有对象有一些公有成分。在面向对象的环境中,称之为类变量(class variables). C++中称为静态成员(static members). 有趣的是,一个静态数据成员只在一个单个的实例中存在,但这个实例被这个类中所有对象分享。静态数据成员的好例子是用来记录给定时刻一个确定类型的对象数目的变量。拿银行账户为例,账户持有人,金额数等是普通数据成员。然而利息率是个静态数据成员:翻译 2015-12-18 06:19:42 · 490 阅读 · 0 评论 -
CPP-Templates
如果我们要处理一批数据,则可以构造一个vector container. 假设数据是整数。随后我们需要类似的操作,但操作数是double。我们就要重新实现前面的container. 另外例子包括构造一个比较大小的函数,如果函数是整数,双精度,或者字符,我们需要分别实现。这显然是重复。为了解决此类问题,c++推出了摸版类。类似概念还有函数摸版。 见下例子:#include <iostream>us翻译 2015-12-15 05:41:06 · 340 阅读 · 0 评论 -
CPP-operator= overloding
c++很好的一个优点就是根据用户定义的类,操作符有不同的意义。这就叫operator overloading. 一般通过在类中提供一个特别的成员函数来实现。可以被overloading的操作符有以下几种:= (assignment operator)+ - * (binary arithmetic operators)+= -= *= (compound assignment operators翻译 2015-12-14 08:57:19 · 602 阅读 · 0 评论 -
CPP-operator==, <overloading
如果已经定义了operator==,那么operator!=很容易实现,只要调用operator==,然后取反。bool Array::operator!=(const Array& v) const{ return !((*this) == v);}这个函数的形式实际上和具体的类无关。即如果定义了operator==,那么总能根据这个模式定义operatot!=. 同样,如果定义了<,原创 2015-12-14 22:51:58 · 874 阅读 · 0 评论 -
C++ Operators
就类而言,c++几乎没有预先定义的操作符。当使用类定义自己的类型时,往往希望能够有适用于这些自定义类型的操作。 当定义自己操作符时,需要写一个名字是operatorX的函数,X代表操作符,如operator+, operator是c++保留字。 1)基本上所有预定义的操作符都能够被重载。而且只有标准操作列表中的才能够被重载。 2)重载的操作符和预先定义的操作符应该有相同的操作数。例如,oper翻译 2015-12-11 23:32:14 · 587 阅读 · 0 评论 -
CPP-Constructors
当declare一个普通变量时候,可以初始化,类却不允许这么做。例如:class C{int i=0; //ERROR, initialization forbiddenconst int k=0;//ERROR, initialization forbidden当declare一个类的对象时候,此对象中所有数据成员是没有初始化的状态,直到用其他方式来初始化此对象。最简单的方式是用constru翻译 2015-09-20 00:14:25 · 684 阅读 · 0 评论 -
CPP-类的位置(Placement of class)
当写简单程序时候,所有东西可以放在一个文件中,但程序较大时,这样做并不明智。前面我们讨论过如何将程序分割,即应该成对的构建程序文件。对每个函数定义文件(definition),应该有相应的函数声明头文件(declaration). 对类,我们有类似的原则。即应该成对的创建文件,一个头文件和一个定义文件。类的定义被放在头文件中,相应的定义文件放置成员函数的定义,只有内联函数的实现才可以放在头文件中,其翻译 2015-09-19 06:36:36 · 636 阅读 · 0 评论 -
CPP-Constructor, destructors and inheritance
Constructor, destructors and inheritance 和别的对象类似,导出类的对象也能够用构造函数初始化。当调用构造函数时候,从基类继承过来的数据成员也必须初始化。这个通过调用基类的构造函数实现。而导出类对象中剩下的部分则通过调用导出类特定的构造函数初始化。继续用前面person, employee, programmer类做例子。class Person{publi翻译 2015-10-15 05:38:01 · 518 阅读 · 0 评论 -
CPP-类定义(Class definitions)
Member function 的declaration和普通函数一样。仅有的差别是放在类的定义里面。同样数据成员的declaration和普通变量也一样,只是放在类的定义里面。保留字public和private用来实现信息隐藏。public暗示被宣称的属性在类的定义的后续部分是可见的。即到处都可获得。private暗示只能在类的内部获得。 如果没有指明是public或private,类中所有成员默翻译 2015-09-19 03:59:16 · 4001 阅读 · 0 评论 -
CPP-Calling constructors(调用构造函数)
构造函数的调用: 构造函数和普通函数调用有所区别,看以下生成类Clock对象的几条语句:Clock c1;Clock c2(8,25,30);Clock c3=Clock(22,15,10)Clock *p1,*p2;p1=new Clock;p2=new Clock(14,5,40);第一行:类Clock的默认构造函数将被自动调用,意味着c1的数据成员被设置为0. 第二和第三行在声明一翻译 2015-09-20 00:28:29 · 691 阅读 · 0 评论 -
CPP-Inheritance
Derived Classes 如果已经有一个一般的类,现在要基于此类建立另外一个类。此时就要用到类的继承。例如,现在已经有个类employee, 想建立一个manager类。manager是特殊的employee. 可以用继承机制来建立。class Manager : public Employee{ public: new member functions翻译 2015-10-10 05:24:41 · 403 阅读 · 0 评论 -
STL: multimap class
multimap 特点: 1) 根据key值,能快速访问value 2) 元素根据key值进行了排序 3) 一个key值可以对应多个value直接上程序看用法:#include<fstream>#include<iostream>#include<math.h>#include<map>using namespace std;int main(int argc,char** argv原创 2016-03-25 03:13:26 · 528 阅读 · 0 评论