返回信息流// 动态数组类.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
using namespace std;
class Point
{
public:
Point() {X = Y = 0 ;}
Point(Point &p);
void ShowPoint() {cout << "(" << X << "," << Y << ")" << endl ;}
void CreatPoint(int x , int y) {X = x ; Y = y ;}
~Point() {}
private:
int X , Y ;
};
class ArrayOfPoints
{
public:
ArrayOfPoints(int n)
{numberOfPoints = n ; points = new Point[n] ;}
~ArrayOfPoints()
{numberOfPoints = 0 ; delete []points;}
Point &Element(int n) //*****
{return points[n] ;}
private:
Point *points ;
int numberOfPoints ;
};
int main(int argc, char* argv[])
{
int number ;
cout << "Please enter the number of points:" ;
cin >> number ;
ArrayOfPoints points(number);
points.Element(0).CreatPoint(5,10);
points.Element(1).CreatPoint(15,20);
points.Element(0).ShowPoint();
points.Element(1).ShowPoint();
return 0;
}
其中函数Point &Element(int n)中的&是什么意思啊,为什么要加它呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #28161同步于 2009/9/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
动态数组类的创建问题
kkxhx
2009/9/5镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
你没给出Point复制构造函数的明确定义啊~
不加 &,return的时候会调用Point类复制构造函数复制出一个临时对象,你类里面只有
Point(Point &p);
编译器找不到函数定义就报错了呗~
【 在 kkxhx 的大作中提到: 】
: 那么不加它为什么会报错呢?
楼上正解,
把Point(Point &p);改为
Point(Point &p):X(p.X),Y(p.Y){};
再去掉Point &Element(int n)里的&号就行了
【 在 Raiden 的大作中提到: 】
: 你没给出Point复制构造函数的明确定义啊~
: 不加 &,return的时候会调用Point类复制构造函数复制出一个临时对象,你类里面只有
: Point(Point &p);
: ...................
%
【 在 Raiden 的大作中提到: 】
: 你没给出Point复制构造函数的明确定义啊~
: 不加 &,return的时候会调用Point类复制构造函数复制出一个临时对象,你类里面只有
: Point(Point &p);
: ...................
谢谢学长
【 在 MattOrinber 的大作中提到: 】
: 楼上正解,
: 把Point(Point &p);改为
: Point(Point &p):X(p.X),Y(p.Y){};
: ...................
谢谢学长