码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 构造器 普通构造器 代理构造器

时间:2014-05-21 13:54:57      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:代理构造器

第一种:

常见构造器:


Point.h

#ifndef POINT_H_
#define POINT_H_


class Point {
private:
int x = 1;
int y = 1;
public:
Point(); //该构造器实现在Point.cpp
Point(int x, int y);
int get_x(){return this->x;}
int get_y(){return this->y;}
virtual ~Point();
};


#endif /* POINT_H_ */


Point.cpp

#include "Point.h"


Point::Point() {
// TODO Auto-generated constructor stub
}


Point::Point(int x , int y) {
// TODO Auto-generated constructor stub
this->x = x;
this->y = y;
}


Point::~Point() {
// TODO Auto-generated destructor stub
}


Test.cpp

#include"Point.h"
#include<iostream>


using namespace std;
/*
 * Test.cpp
 *
 *  Created on: 2014年5月21日
 *      Author: John
 */




int main(int argc, char* argv[]){


Point pt;
Point pt1(2,2);


cout<<pt.get_x()<<" , " <<pt.get_y()<<endl;
cout<<pt1.get_x()<<" , " <<pt1.get_y()<<endl;


return 0;
}

输出 

1 , 1
2 , 2


第二种:代理构造器

 Point.h

#ifndef POINT_H_
#define POINT_H_


class Point {
private:
int x ;
int y ;
public:
//Point(); //该构造器实现在Point.cpp
Point(int x, int y);
Point():Point(0,0){}  //内嵌 不用分号结尾
//这行代码声明了一个默认构造器,但它把工作转交给另一个构造器:
//它调用了那个有两个输入参数的构造器,并把输入参数值(0,0)传递给了后者
//无论是使用在类声明里对乘员进行初始化,还是使用代理构造器
//均需要找个地方声明默认构造器
//前者使用Point();后者使用Point():Point(0,0){}
int get_x(){return this->x;}
int get_y(){return this->y;}
virtual ~Point();
};


#endif /* POINT_H_ */

Point.cpp

Point::Point(int x , int y) {
// TODO Auto-generated constructor stub
this->x = x;
this->y = y;
}

Point::~Point() {
// TODO Auto-generated destructor stub
}


Test.cpp不变

输出

0 , 0
2 , 2

C++ 构造器 普通构造器 代理构造器,布布扣,bubuko.com

C++ 构造器 普通构造器 代理构造器

标签:代理构造器

原文地址:http://blog.csdn.net/haimian520/article/details/26454001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!