当C++编译器通过它的时候。如果你没有声明下列函数,体贴的编译器会声明它自己的版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的。换句话说,如果你这么写:class Empty{}...
分类:
编程语言 时间:
2014-08-24 14:04:52
阅读次数:
211
前言 对于一个类来说,最最基础的三类成员函数莫过于:构造函数,析构函数以及拷贝函数 (copy构造函数和=重载函数)。即使你的类没有为这些函数做出定义,C++ 也会自动为你创建。本文将讲述的是 C++ “偷偷”为你创建的这三个函数究竟是怎么样的。 了解这些,能更清楚代码是如何运转的,从而写出自己.....
分类:
编程语言 时间:
2014-08-24 12:51:22
阅读次数:
236
13.39 编写自己的StrVec,包括自己版本的reserve、capacity和resize。13.40 为StrVec添加一个构造函数,它接受一个initializer_list参数StrVec.h#ifndef STRVEC_H#define STRVEC_H#include#include...
分类:
其他好文 时间:
2014-08-24 12:49:42
阅读次数:
163
Option Explicit Private Declare Function GetCurrentProcess Lib "kernel32" () As Long Private Declare Function IsWow64Process Lib "kernel32" (ByVal hPr...
分类:
其他好文 时间:
2014-08-24 12:48:52
阅读次数:
188
如果一个类没有定义默认构造函数,那么构造该类的对象数组将会是一个问题。于是实现了一个将new操作符掰开了来用的代码。首先分配内存,然后再在分配的内存上调用构造函数构造对象,下面的代码做一个简单的备忘。
//没有定义构造函数的类不能定义该类的对象数组,内置类型除外
//operator new + ctor
//dtor + operator delete
//operator new[] ...
分类:
其他好文 时间:
2014-08-24 11:44:02
阅读次数:
147
前言 某个对象若不被初始化,意味着它的执行很有可能导致不确定的结果,这是我们的代码所要坚决避免的情况。 本文将讲解 C++ 代码中关于对象初始化的方方面面。成员变量的初始化 当我们构造一个对象的时候 (不含初始化列表),在进入构造函数之前,其实所有成员变量已经被其所属类型的默认构造函数给初始化...
分类:
其他好文 时间:
2014-08-24 11:35:22
阅读次数:
189
定义:
只有单个形参,该形参是对本类类型对象的引用(常用const修饰),这样的构造函数成为复制构造函数。
使用方式:
(1)显示使用----用一个同类型的对象初始化该对象时;
(2)隐式使用----将该类型的对象传递给函数或从函数返回该类型对象时。
三种类型的复制构造函数:
*bitwise copy constructor :逐位复制-----默认方式
*合成的 co...
分类:
其他好文 时间:
2014-08-24 10:19:52
阅读次数:
144
string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化此外,string类还支持默认构造函数和复制构造函数,如string s1;string s2="hello";都是正确的写法。当构造的st...
分类:
其他好文 时间:
2014-08-23 20:14:41
阅读次数:
200
#include "iostream"
using namespace std;
/*
1、带有默认构造函数的类对象成员;
2、
*/
//讨论初始化构造函数
//主要讨论在有虚函数情况下的初始化构造函数问题
//含有虚函数的类对象维护一个vptr指向类中的vtbl
class ZoolAnimal
{
public:
ZoolAnimal(){}
~ZoolAnimal(){}
vi...
分类:
其他好文 时间:
2014-08-23 16:52:21
阅读次数:
162
C++新手常有的误解:
C++新手一般有两个常见的误解:
1.任何class如果没有定义default constructor,就会被合成出一个来。
2.编译器合成出来的default constructor会显示设定“class 内每一个data member的默认值”
有四种情况,会导致“编译器必须为未声明的constructor之classes合成一个defaultco...
分类:
编程语言 时间:
2014-08-23 16:52:11
阅读次数:
253