10 2017 档案
摘要:operator= 赋值运算符,目的是想给当前对象赋值一个新的值。 比如: 有一个类A: A myclass1; A myclass2; myclass1 = myclass2; //调用赋值运算符 返回值为对象的引用目的是为了连锁赋值 x = y = z = 0; 为了实现连锁赋值,赋值运算符必须
阅读全文
摘要:Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmet
阅读全文
摘要:Given an array consisting of n integers, find the contiguous subarray of given length k that has the maximum average value. And you need to output the
阅读全文
摘要:1.不可以重载的运算符: ::, .*, ., ? :。 2.一元重载:只有一个参数 二元重载:有两个参数,左侧运算对象传递第一个参数,右侧运算对象传递第二个参数。 在类外:void operator+(int, int) 类内:Name operator(int)。因为会有一个隐含的this指针,
阅读全文
摘要:题目: Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.
阅读全文
摘要:1.类型别名 关键字typedef typedef int myInt; //myInt为int同义词 可以用myInt来声明对象 myInt a = 0; //等于int a = 0 在函数指针中typedef用处更大,以后细说 C++11新标准下,可以用using using myInt = i
阅读全文
摘要:这是个好东西,Effective C++里都已说过:能用的地方尽量用,大师都这样说了,我们这些渣渣为何不遵循? const就是常量,这就有个重要的东西了:常量必须初始化 const int a = 0; const int b = get_size(); //已知有get_size()函数 cons
阅读全文
摘要:2.3.1引用 在C++11标准中,增加了一个右值引用,稍微高级的东西,以后会更新。 一般来说引用都是说的左值引用。 这里就有一个问题,什么是左值,什么是右值。 简单一句话:左值长久,右值短暂 引用其实就是给对象起了另一个名字。 如: int ival = 0; int &refVal = val;
阅读全文
摘要:在构造函数中调用virtual函数时,base class构造期间virtual函数是不会下降到derived class层 如: class Transaction{ public: Transaction(); virtual void logTransaction() const = 0; }
阅读全文
摘要:例如: class Widget { public: ~Widget(){...} }; void doSomething() { vector<Widget>v; } 如果v中有10个Widget,销毁第一个时发生析构函数抛出异常,销毁第二个时析构函数又抛出异常,那么两个异常同时存在的情况下:程序
阅读全文
摘要:1.假设有如下时间类: class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; class AtomicClock :public TimeKeeper {}; factory函数(用户只是想调用时间,而不想操心时间如何计算等细节):Ti
阅读全文
摘要:如果自己定义的类中并不需要copy assignment操作符或者copy构造函数,为了避免编译器自动生成 因为编译器自动生成的没什么用,一般是按照顺序进行赋值或者拷贝,对于有对象内含有指针的话可能会出现一些问题 可以在private中声明(并不定义)它们。但是,友元和成员函数依然可以调用它们。 在
阅读全文
摘要:当写下如下空类时: class Empty{}; 编译器处理后变成; class Empty { public: Empty() {}//默认构造函数 Empty(const Empty&) {}//默认拷贝构造函数 ~Empty(){}//默认析构函数 Empty& operator=(const
阅读全文
摘要:1.两种不同的常量:const在*左边表示被指物为常量,在右边表示指针为常量 * 常量指针:不可以改变指向的位置,但可以改变被指的内容(int* const num = 5); * 指针常量(指向常量的指针):可以改变指针指向的位置,但是不可以改变被指物的内容(const int* num = 5); 2.STL标准库中的迭代器 vector vec; const vector::...
阅读全文
摘要:一. 永远在使用对象之前将它初始化 1.对于内置类型,手动完成初始化。 例如:int =0; 2.除了内置类型之外的类型,由构造函数进行初始化:确保每个构造函数都将对象的每一个成员进行了初始化。 二. 特别区分“赋值”和“初始化” 例如:有一个类:A中有一个成员变量string name; 有一个构
阅读全文
摘要:1.#define不被视为语言的一部分,并且使用常量会比#define导致较小的码 2.常量替换#define的两种情况 定义常量指针(当指针所指物为常量时,应该有两个const),const char* const A = “zhou”; class中的常量:将常量的作用域限制在类中,因此必须为类
阅读全文
摘要:两种选择: 类的行为像一个值:有自己的状态,拷贝一个像值的对象时,副本和原对象是完全独立的。改变副本不会改变原对象。 类的行为像一个指针:类是共享状态,当拷贝这个对象时,原对象和副本对象使用相同的底层数据,改变副本也会改变原对象。 1.行为像值的类 拷贝对象,而不是拷贝指针。 代码如下: class
阅读全文
摘要:1.拷贝构造函数 基本形式:Name(const Name&) 对于类类型成员,会调用拷贝构造函数拷贝,对于内置类型成员就直接拷贝。对于数组,合成的拷贝构造函数会逐个拷贝都另一个数组中(内置类型)。 拷贝构造函数发生的时候: 发生在用 = 定义变量时 将一个对象作为实参传递给一个非引用类型的形参 从
阅读全文

浙公网安备 33010602011771号