// 实现一个复数类(complex)
//要求:1:实现不带参 / 带参数 /带默认参数的几种构造函数。
// 2:实现拷贝构造 / 析构函数。
#include
using namespace std;
// 带参数的构造函数
class complex
{
private:
double _real;
double _image;
public:
void p...
分类:
编程语言 时间:
2015-04-25 12:15:30
阅读次数:
122
在C#中,许多对象自动实现了clone函数,在C++中,要拷贝一个对象,除了自定义一个拷贝构造函数来实现对象复制外,还可以像C#中那样实现一个clone函数,这需要借助编译器实现的一个隐藏拷贝构造函数,这样的做法,更省心。#include "stdafx.h"#include class CA{pu...
分类:
编程语言 时间:
2015-04-20 16:16:44
阅读次数:
242
传值方式是位拷贝形式,包括对象不调用构造函数,但会调用其析构函数
如果设计了拷贝函数,当从现有的对象创建新对象时,编译器将不使用位拷贝。编译器总是调用我们的拷贝构造函数(c++编译器自动创建的拷贝构造函数也是位拷贝的,是不安全的。所以一般自己创建。)
又一个简单的技术防止通过按值传递方式传递:声明一个私有拷贝构造函数。甚至不必去定义它,除非成员函数或友元函数需要执行按值传递方式的传递。如果用户...
分类:
其他好文 时间:
2015-04-17 18:18:22
阅读次数:
120
1.SStud 结构体 SStud ss =s2;//栈内拷贝构造 SStud sss(s2);//栈内拷贝构造 SStud *ps = new SStud(s2);//堆内的拷贝构造 拷贝构造函数: 只有一个构造参数是SStud &ss (指针),拷贝构造函数的特点是,只有一个参数而且类...
分类:
编程语言 时间:
2015-04-16 21:31:52
阅读次数:
124
看过C程序的返回值得处理过程,我们不妨先推测一下C+的返回值处理过程:总体与C的返回过程类似,只不过在上图复制1中并不是直接执行“位逐次拷贝”,而是调用拷贝构造函数(因为此时产生了新对象——temp),在复制2的时候需要调用赋值运算符(因为此时没有新的对象产生)。下面我们进行验证。 class X....
分类:
其他好文 时间:
2015-04-16 01:25:20
阅读次数:
484
1.友元函数 (1)友元函数是定义在一个类外的普通函数。 友元函数和普通函数的定义一样;在类内必须将该普通函数声明为友元。 (2)友元函数不是成员函数。 不能通过对象来调用,而是直接调用;友元函数可以访问类的公有、受保护以及私有成员,但是必须通过对象、对象指针或者对象引用来访问。 2.友元...
分类:
编程语言 时间:
2015-04-16 01:14:32
阅读次数:
166
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=100;int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CA{ public: CA(in....
分类:
编程语言 时间:
2015-04-15 16:35:57
阅读次数:
161
// Operator.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include
#include
using namespace std;
class Integer
{
public:
//explicit如果添加explicit就不能进行隐式构造
//隐式构造不会导致拷贝构造函数调用
Integer(int num):m_num...
分类:
编程语言 时间:
2015-04-13 16:42:53
阅读次数:
239
1. 默认成员函数Class Empty{ public: Empty(); // 缺省构造函数 Empty( const Empty& ); // 拷贝构造函数 ~Empty(); // 析构函数 Empty& operator=( const Empty& ); // 赋值运算符 Empty* ...
分类:
编程语言 时间:
2015-04-11 19:19:08
阅读次数:
191