1. using 关键字 使用 using 关键字,可以将父类中被隐藏的函数暴露在子类中,但是需要注意的是,在相同情况下,子类函数的优先级更高。 2. 继承构造函数(C++11) 在c++11之前,构造函数、析构函数、赋值操作符,这些都不能被继承。但是,C++11允许我们使用 using 关键字来继...
分类:
其他好文 时间:
2015-04-08 21:13:06
阅读次数:
158
引申问题一:拷贝构造函数中参数是否加const对拷贝构造函数的影响。
网上大多数人对于这个问题的解释只能达到"当你不想对参数进行修改时,就需要加上const关键字"的程度,但是并没有仔细区分这两种情况到底有什么区别。以下面的程序为例:
Dog.h
#ifndef __test_header__Dog__
#define __test_header__Dog__
#include
cl...
分类:
编程语言 时间:
2015-04-03 17:20:15
阅读次数:
157
重载方法: 只能够对参数列表进行重载,不能够对返回类型进行重载。定义可选参数: 指定一个参数是可选的,可以在定义方法时为该参数提供一个默认值,默认值是使用赋值操作符来进行赋值的。并且所有的可选参数必须放在必选参数之后。形式如下: void a(int a,int b=0;string c="a...
构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序对象是由“底层向上”开始构造的,当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。因为,构造函数一开始构造时,总是要调用它的基类的构造函数,然后才开始执行其...
分类:
其他好文 时间:
2015-04-01 23:18:39
阅读次数:
157
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:
(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:
class Rect
{
private:
int width;
int height;
};
Rect rect1;
Rect rect2(rect1); // 使用rect1初始化r...
分类:
编程语言 时间:
2015-04-01 17:54:16
阅读次数:
296
6.2.6 类成员的访问控制类成员包括类的成员变量和成员函数,它们分别用来描述类的属性和行为。而类成员的访问控制决定了哪些成员是公开的,可以被外界访问,也可以被自身访问;哪些成员是私有的,只能在类的内部访问,外界无法访问。就像一个人的钱包,只有他自己能动,别人是不能动的。又如同自己藏的私房钱也只有自...
分类:
编程语言 时间:
2015-04-01 16:47:33
阅读次数:
176
结论: 从面相对象编程的角度考虑,拷贝构造函数调用重载赋值操作符,重载赋值操作符调用拷贝构造函数的写法都是没有意义的。应该避免。Don't try to implement one of the copying functions in terms of the other. Instead, pu...
分类:
编程语言 时间:
2015-04-01 15:14:08
阅读次数:
141
C++ 拷贝构造函数 赋值构造函数=================================一句话,赋值函数的前提是对象已定义;而拷贝构造是执行时才会创建一个对象。拷贝构造需要的是深拷贝。赋值函数一般模式:type& operator =(const type& par) { // (...
分类:
其他好文 时间:
2015-04-01 01:52:26
阅读次数:
128
引用是别名,其本质就是指针,引用的实现可以简单看作是一个指向特定对象的常指针。引用传参时直接操作该对象,减少了值传参时的拷贝开销。因此拷贝构造函数参数类型为(const 类型& ... ),顺便一提拷贝构造是为了按自定义方式复制对象,避免编译器的浅拷贝行为。那么指针与引用有何异同:1、引用必须初始化...
分类:
其他好文 时间:
2015-04-01 01:49:04
阅读次数:
122
5.了解C++默默编写并调用哪些函数 1.C++空类 C++会为一个空类建立以下函数 (1).默认构造函数 (2).默认拷贝构造函数 (3).析构函数 (4).赋值运算符(如果成员包含...
分类:
编程语言 时间:
2015-03-29 19:21:53
阅读次数:
158