类的学习。
#include<iostream>
using namespace std;class Circle
{
private:float radius;int *p_index;
public:Circle(float r=1.0,int index=100);//構(gòu)造函數(shù)的聲明~Circle(); //析構(gòu)函數(shù)Circle(Circle &c); //拷貝構(gòu)造函數(shù)float area();
};Circle::Circle(float r,int index)//構(gòu)造函數(shù)的定義
{radius=r;cout<<"構(gòu)造函數(shù)被調(diào)用"<<endl;p_index=new int(index);//堆區(qū)開(kāi)空間
}float Circle::area()
{return radius*radius*3.14;
}Circle::~Circle()//析構(gòu)函數(shù):一般就是用于釋放空間
{delete p_index;//釋放空間
}Circle::Circle(Circle &c)//拷貝構(gòu)造函數(shù)
{radius=c.radius;p_index=new int(*c.p_index);//深拷貝:創(chuàng)建一個(gè)新的對(duì)象和數(shù)組,將原對(duì)象的各項(xiàng)屬性的“值”(數(shù)組的所有元素)拷貝過(guò)來(lái),是“值”而不是“引用”,新對(duì)象跟原對(duì)象不共享內(nèi)存,修改新對(duì)象不會(huì)改到原對(duì)象cout<<"拷貝構(gòu)造函數(shù)被調(diào)用"<<endl;
}
//使用拷貝構(gòu)造函數(shù)的時(shí)機(jī)
//1.原賦值新
//2.函數(shù)調(diào)用:實(shí)參拷貝形參
//3.函數(shù)返回:返回時(shí)對(duì)象拷貝臨時(shí)對(duì)象//Circle c1(10.0);
//Circle c2=c1; 調(diào)用了一次拷貝構(gòu)造函數(shù)//Circle c1(10.0);
///Circle c2;
//c2=c1; 賦值,沒(méi)有使用拷貝構(gòu)造函數(shù)int main()
{Circle c1(10.0,3);//使用構(gòu)造函數(shù)之后,可以直接在定義的變量名后面加括號(hào)賦上初始值;Circle c2(c1);cout<<c1.area()<<endl;cout<<c2.area()<<endl;return 0;
}
總結(jié)
- 上一篇: CSS3实现太极图教程
- 下一篇: linux设备树 驱动,(9条消息)zy