1. 程式人生 > >C++實驗二 類與物件 (附答案)

C++實驗二 類與物件 (附答案)

實驗二  類與物件

實驗目的和要求

    1.掌握類、類的資料成員、類的成員函式的定義方式。

    2.理解類成員的訪問控制方式。

    3.掌握物件的定義和操作物件的方法。

    4.理解建構函式和解構函式的定義與執行過程。

    5.掌握過載建構函式的方法。

6.瞭解拷貝建構函式的定義方法。

實驗內容

1.下面程式中有錯,在不刪除和增加程式碼行的情況下,改正錯誤語句,使其正確執行。

#include<iostream.h>

class Aa

{

public:

Aa(int i=0)

{

a=i; 

cout<<"Constructor "<<a<<endl;

}

~Aa()

{

cout<<"Destructor "<<a<<endl;

}

void print()

{

cout<<a<<endl;

}

private:

int a;

};

int main()

{

Aa al(1),a2(2);

al.print();

cout<<a2.a<<endl; 

return 0;

}

2.檢查下面的程式,找出其中的錯誤,並改正。然後上機除錯,使程式能正常執行。

1

#include<iostream.h>

class Date

{

void set_date();

void show_date();

int year;

int month;

int day;

};

Date d;

int main()

{

set_date();

show_date();

}

void set_date()

{

cin>>d.year;

cin>>d.month;

cin>>d.day;

}

void show_date()

{

cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl;

}

2

#include<iostream.h>

class A

{

public:

void A(int i=0)

{

m=i;

}

void show()

{

cout<<m<<endl;

}

void ~A(){}

private:

int m;

};

int main()

{

A a(5);

a.m+=10;

a.show();

return 0;

}

3

#include<iostream.h>

class X

{

private:

int a=0;

int &b;

void setA(int i)

{

a=i;

}

X(int i)

{

a=i;

}

public:

int X()

{

a=b=0;

}

X(int i,int j)

{

a=i;

b=j;

}

void setC(int k)

{

c=c+k;

}

};

void main()

{

X x1;

X x2(2);

X x3(1,2);

x1.setA(3);

}

3.除錯下列程式。

#include<iostream.h>

class TPoint

{

private:

int X,Y;

public:

TPoint(int x,int y)

{

X=x;

Y=y;

cout<<"Constructor is called"<<endl;

}

TPoint(TPoint &p);

~TPoint()

{ cout<<"Destructor is called"<<endl; }

int getx()

{ return X; }

int gety()

{ return Y; }

};

TPoint::TPoint(TPoint &p)

{

X=p.X;

Y=p.Y;

cout<<"Copy-initialization Constructor is called"<<endl;

}

void main()

{

TPoint p1(4,9);

TPoint p2(p1);

TPoint p3 = p2;

cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;

}

1)寫出程式的輸出結果,並解釋輸出結果。

2)按下列要求進行除錯:

在主函式體內,新增下列說明語句:

TPoint p4,p5(2);

     除錯程式會出現什麼現象?為什麼?如何解決?(提示:對已有的建構函式進行適當修改)結合執行結果分析如何使用不同的建構函式建立不同的物件。

3)在主函式內使用new建立不同引數動態兩個動態物件,輸出其座標,並用delete刪除之。執行程式,分析執行結果。

4)在程式中定義個全域性物件,在主函式最前新增語句:

cout<<"Enter main"<<endl;

執行程式,分析執行結果。

4.完善程式,並寫出執行結果

根據程式要求,完善程式後輸入源程式,編譯連線,並寫出執行結果。

如果某個自然數除了1和它本身外還有其他因子,則這個自然數就是合數(非素數)。試定義一個類NUM,從3開始向上試探找出n個連續的自然數,且它們都是合數。當找到第一組連續的n個合數後,即停止查詢。

具體要求如下:

1)私有成員

int n : 存放滿足條件的連續自然數的個數。

int *p: 根據n的值申請一個動態陣列用來存放求出的滿足條件的n個自然數。

2)公有成員函式

NUM(int n1): 建構函式,用n1初始化n,根據n的值申請動態陣列空間,使p指向該動態陣列空間。

int yes(int x): 判斷x是否為合數。如果是,返回1,否則返回0

void fun(): 3開始向上試探找出n個連續的自然數,且它們都是合數,並依次存入動態陣列。

void print(): 輸出滿足條件的n個合數。

~NUM(): 解構函式,釋放動態陣列所佔用的儲存空間。

3)在主函式中定義一個NUM類的物件num,求出10個連續的合數。然後通過物件num呼叫成員函式求出10個連續的合數,並輸出計算結果。

#include <iostream.h>

class NUM

{ //定義資料類NUM

private:

int n;

int *p;

public:

NUM(int n1)

{

n=n1;

p=         ; //動態分配存放連續合數的儲存空間

}

int yes(int x)

{

for(int i=2;i<=x/2;i++)

if (x%i==0)

return 1;

return 0;

}

void fun(void)

{

int j;

for(int i=3;1;i++)

{

j=0;

while(        &&j<n)

{

p[j]=i;

j++;

i++;

}

if(j==n)

break;

}

}

void print(void)

{

cout<<"找到的"<<n<<"個連續合數為:"<<endl;

for(int i=0;i<n;i++)

cout<<p[i]<<"  ";

cout<<endl;

}

~NUM()

{

             ; //釋放在建構函式中申請的儲存空間

}

};

void main()

{

cout<<"請輸入要求的連續合數的個數(例如10)";

int n;

cin>>n;

NUM num(n);

             ; //尋找連續的合數,並存入動態申請的儲存空間中

             ; //輸出尋找到的合數

}

5.請定義一個矩形類(Rectangle),私有資料成員為矩形的長度( len)和寬度(wid),預設建構函式置lenwid0,有參建構函式置lenwid為對應形參的值,另外還包括求矩形周長、求矩形面積、取矩形長度和寬度、修改矩形長度和寬度為對應形參的值、輸出矩形尺寸等公有成員函式。要求輸出矩形尺寸的格式為“length:長度,width:寬度”。編寫主函式對定義的類進行測試。

6.宣告一個時間類,時間類中有3個私有資料成員(HourMinuteSecond)和兩個公有成員函式(SetTimePrintTime)SetTime根據傳遞的3個引數為物件設定時間;PrintTime負責將物件表示的時間顯示輸出,輸出格式為“HourMinuteSecond”。

1)在主函式中,建立一個時間類的物件,設定時間為92030秒並顯示該時間。

2)使用建構函式代替上面的SetTime成員函式,並在主函式中使用建構函式設定時間為104050秒,並顯示該時間。

3)過載時間類的建構函式(不帶引數)使小時、分、秒均為0

4)在時間類的解構函式中輸出"Good bye!

5)定義拷貝建構函式並呼叫。

7.下面是一個整型連結串列類intList的宣告,請給出該類所有資料成員的類外定義,並在主函式中測試該類。

class intList

{

protected:

struct Node

{

int data;

Node *next;

};

Node *L;

public:

intList(); //建構函式

~intList(); //解構函式

bool Insert(int i,int elem);

bool Remove(int i,int &elem);

//刪除連結串列的第i個位置的元素,刪除成功返回true,失敗返回false

int Find(int elem);

//在連結串列中查詢值為elem的元素,找到返回該元素在連結串列中的位置,否則返回0

int Length(); //返回連結串列長度(元素個數)

void PrintList(); //輸出連結串列

};

參考答案(非權威,僅僅是我自己的理解,如有錯誤,歡迎批評指正!)

第一題:
#include<iostream.h>

class Aa
{
public:
			Aa(int i=0)
			{
				a=i; 
				cout<<"Constructor "<<a<<endl;
			}
			~Aa()
			{
				cout<<"Destructor "<<a<<endl;
			}
			void print()
			{
				cout<<a<<endl;
			}

private:
			int a;
};

int main()
{
			Aa al(1),a2(2);
			al.print();
			a2.print();	
			return 0;
}



第二題
(1)
#include<iostream.h>

class Date
{
public:
			void set_date();
			void show_date();

private:
			int year;
			int month;
			int day;
};

Date d;				
int main()
{
		d.set_date();
		d.show_date();
  return 0;
}

void Date::set_date()		
{
			cin>>year;
			cin>>month;
			cin>>day;
}

void Date::show_date()
{
		cout<<year<<'/'<<month<<'/'<<day<<endl;
}



(2)
#include<iostream.h>

class A
{
public:
			A(int i=0)
			{
				m=i;
			}
			void show()
			{
				cout<<m<<endl;
			}
			~A(){}
			friend void add(A &);
  
private:
		  int m;
};

void add(A &a)
{
	a.m+=10;	
}

int main()
{
		A a(5);
		add(a);
		a.show();
		return 0;
}




(3)
#include<iostream.h>

class X
{
private:
			int a,b,c;
public:
			X(int i)
			{
				a=i;
			}
			X()
			{
				a=b=0;
			}
			X(int i,int j)
			{
				a=i;
				b=j;
			}
			void setC(int k)
			{
				c=c+k;
			}
			void setA(int i)
			{
				a=i;
			}
};

void main()
{
			X x1;
			X x2(2);
			X x3(1,2);
			x1.setA(3);

}




第三題
(1)

void main()
{
	TPoint p1(4,9);	//呼叫建構函式初始化p1
	TPoint p2(p1);		//顯示呼叫拷貝建構函式初始化p2
	TPoint p3 = p2;	//物件之間的賦值,由於之前沒有定義p3,因此用另一個同類的物件給其賦值時,會呼叫拷貝建構函式。
	cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;	//輸出p3在賦值後的x和y
}




(2)
答:除錯程式會程式錯誤,原因是對於無輸入的物件和只要一個輸入值的物件沒有相應的建構函式,要解決也挺簡單,就是在說明部分加上相應的建構函式就可以了。

修改後的程式如下:
#include<iostream.h>

class TPoint
{
private:
			int X,Y;
public:
			TPoint()
			{	
				X=Y=0;
				cout<<"A Constructor is called"<<endl;
			}
			TPoint(int i)
			{	
				X=i;
				Y=0;
				cout<<"B Constructor is called"<<endl;
			}
			TPoint(int x,int y)
			{	
				X=x;
				Y=y;
				cout<<"Constructor is called"<<endl;
			}
			TPoint(TPoint &p);
			~TPoint()
			{	cout<<"Destructor is called"<<endl;	}
			int getx()
			{	return X;	}
			int gety()
			{	return Y;	}
};

TPoint::TPoint(TPoint &p)
{
	X=p.X;
	Y=p.Y;
	cout<<"Copy-initialization Constructor is called"<<endl;
}

void main()
{
	TPoint p1(4,9);
				cout<<"p1=("<<p1.getx()<<","<<p1.gety()<<")"<<endl;
	TPoint p2(p1);
				cout<<"p2=("<<p2.getx()<<","<<p2.gety()<<")"<<endl;
	TPoint p3 = p2;
				cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")"<<endl;
	TPoint p4,p5(2);
				cout<<"p4=("<<p4.getx()<<","<<p4.gety()<<")"<<endl;
				cout<<"p5=("<<p5.getx()<<","<<p5.gety()<<")"<<endl;
}

(3)
#include<iostream.h>

class TPoint
{
private:
			int X,Y;
public:
			TPoint(int x,int y)
			{	
				X=x;
				Y=y;
				cout<<"Constructor is called"<<endl;
			}
			TPoint(TPoint &p);
			~TPoint()
			{	
					cout<<"Destructor is called"<<endl;	
			}
			int getx()
			{	return X;	}
			int gety()
			{	return Y;	}
};

TPoint::TPoint(TPoint &p)
{
			X=p.X;
			Y=p.Y;
			cout<<"Copy-initialization Constructor is called"<<endl;
}

void main()
{
				TPoint *p1=new TPoint(4,9);
				cout<<"p1=("<<p1->getx()<<","<<p1->gety()<<")"<<endl;
				delete p1;		
						
}



(4)
#include<iostream.h>

class TPoint
{
private:
			int X,Y;
public:
			TPoint(int x,int y)
			{	
				X=x;
				Y=y;
				cout<<"Constructor is called"<<endl;
			}
			TPoint(TPoint &p);
			~TPoint()
			{	
					cout<<"Destructor is called"<<endl;	
			}
			int getx()			{	return X;	}
			int gety()			{	return Y;	}
			void ShowPoint()
			{
					cout<<"p1=("<<X<<","<<Y<<")"<<endl;
			}
};

TPoint::TPoint(TPoint &p)
{
			X=p.X;
			Y=p.Y;
			cout<<"Copy-initialization Constructor is called"<<endl;
}

void main()
{
				cout<<"Enter main"<<endl;
				TPoint *p1=new TPoint(4,9);
				p1->ShowPoint();
				delete p1;		
						
}




第四題:
#include <iostream.h>
class NUM
{	//定義資料類NUM
private:
				int n;
				int *p;
public:
				NUM(int n1)
				{
						n=n1;
						p=new int[n];    		//動態分配存放連續合數的儲存空間
				}

				int yes(int x)
				{
						for(int i=2;i<=x/2;i++)
						if (x%i==0)		return 1;
						return 0;
				}

				void fun(void)
				{
						int j;
						for(int i=3;1;i++)
						{
								j=0;
								while(yes(i)&&j<n)
								{
										p[j]=i;
										j++;
										i++;
								}
								if(j==n)				break;
						}
				}

				void print(void)
				{
				cout<<"找到的"<<n<<"個連續合數為:"<<endl;
				for(int i=0;i<n;i++)
				cout<<p[i]<<"  ";
				cout<<endl;
				}

				~NUM()
				{
					if(p)	 delete[]p; 		//釋放在建構函式中申請的儲存空間
				}
};

void main()
{
				cout<<"請輸入要求的連續合數的個數(例如10):";
				int n;
				cin>>n;
				NUM num(n);
				num.fun();	//尋找連續的合數,並存入動態申請的儲存空間中
				num.print() ;	//輸出尋找到的合數
}




第五題:

#include<iostream.h>

class Rectangle
{
private:
			int len,wid;
public:
			Rectangle()
			{	
				len=wid=0;
				cout<<"First Constructor is called"<<endl;
			}

			Rectangle(int i,int w)
			{	
				len=i;
				wid=w;
				cout<<"Second Constructor is called"<<endl;
			}

			void Set_Rectangle()
			{
							cin>>len;
							cin>>wid;
			}
			
			int Get_Perimeter()				{		return 2*(len+wid);		}
			int Get_Area()						{		return len*wid;		}
			int get_len()							{	return len;	}
			int get_wid()							{	return wid;	}
		
			~Rectangle()			{	cout<<"Destructor is called"<<endl;	}
};

void main()
{
int temp;
Rectangle rect,Default(8,9);
cout<<endl;
cout<<"預設長度:"<<Default.get_len()<<"  ,  "<<"預設寬度:"<<Default.get_wid()<<endl;
cout<<"矩形的周長為:"<<Default.Get_Perimeter()<<endl;
cout<<"矩形的面積為:"<<Default.Get_Area()<<endl;
cout<<endl;

cout<<"是否需要修改引數 (1:修改  0:退出): ";
cin>>temp;
while(temp==1)
		{
				cout<<"請輸入矩形的長和寬:"<<endl;
				rect.Set_Rectangle();
				cout<<"長度:"<<rect.get_len()<<"  ,  "<<"寬度:"<<rect.get_wid()<<endl;
				cout<<"矩形的周長為:"<<rect.Get_Perimeter()<<endl;
				cout<<"矩形的面積為:"<<rect.Get_Area()<<endl;
				cout<<endl;
	
				cout<<"是否需要修改引數 (1:修改  0:退出): ";
				cin>>temp;
		}
cout<<endl;
}



第六題:
#include<iostream.h>

class Time
{
private:
			int Hour,Minute,Second;
public:
			Time()
			{	
				Hour=Minute=Second=0;
				cout<<"First Constructor is called"<<endl;
			}

			Time(int x,int y,int z)
			{	
				Hour=x;
				Minute=y;
				Second=z;
				cout<<"Second Constructor is called"<<endl;
			}

			Time(Time &p)
			{	
				Hour=p.Hour;
				Minute=p.Minute;
				Second=p.Second;
				cout<<"Copy Constructor is called"<<endl;
			}

			void SetTime()
			{
							cin>>Hour;
							cin>>Minute;
							cin>>Second;
			}

			void PrintTime()
			{
				cout<<"時:"<<Hour<<"    "<<"分:"<<Minute<<"    "<<"秒:"<<Second<<endl;
			}

			~Time()			{	cout<<"Good bye!"<<endl;	}
};

void main()
{
		Time time;
		Time T(10,40,50);
		Time copy=T;

		cout<<endl<<"建構函式時間為:";
		T.PrintTime();
		cout<<endl<<"拷貝建構函式時間為:  ";
		copy.PrintTime();
		cout<<endl;
		cout<<endl<<"請輸入一個時間(時/分/秒): "<<endl<<endl;
		time.SetTime();
		cout<<endl<<"你所輸入的時間為:  ";
		time.PrintTime();
		cout<<endl;
}



第七題:

#include <iostream>
using namespace std;

class intList
{
protected:    
				struct Node
				{
				int  data;
				Node * next;
				};
				Node * L;
public:
				intList();//建構函式
				~intList(); //解構函式   
				bool Insert(int i, int elem) ; //向連結串列的第i個位置插入元素elem,插入成功返回true,失敗返回false    
				bool Remove(int i, int &elem) ;//刪除連結串列的第i個位置的元素elem,刪除成功返回true,失敗返回false
				int Find(int elem); //查詢值為elem的元素,返回該元素在連結串列的位置
				int Length() ;//返回連結串列長度
				void PrintList();//輸出連結串列
};

intList::intList()						//建構函式
{       
		L=new Node; 
		L->next=NULL;   
		cout<<"Constructor is called"<<endl<<endl;
 }

intList::~intList()				//解構函式 
{   
				Node *p,*q;
				p=L;	
				while ( p->next != NULL )
				{  
						q=p->next;
						delete p;
						p=q;
				}
				delete p;
				L=NULL;
				cout<<endl<<"Good bye!"<<endl;
}

bool intList::Insert(int i,int elem)	//向連結串列的第i個位置插入元素elem,插入成功返回true,失敗返回false
{ 
				Node  *p,*s;
				int j;
				p= L; 
				j=0;
				while (		(p!=NULL ) && (j<i-1)	) 
				{  
						  p=p->next;
						  j++;   
				}
				if (	(p!=NULL )&& (j==i-1)	)
				{   
						s=new Node;
						s->data=elem;
						s->next=p->next;
						p->next=s;
						return true;
				}
				else  
						return false;
}

bool intList::Remove(int i,int &elem)	//刪除連結串列的第i個位置的元素elem,刪除成功返回true,失敗返回false
{  
				Node *p,*q; 
				int j;
				p= L; 
				j=0;
				while (		(p->next!=NULL ) && (j<i-1)		)
				{  
						   p=p->next;
						   j++;  
				}
				if (	(p->next!=NULL )&&(j==i-1)		)
				{   
						q=p->next;
						p->next=q->next;
						elem=q->data;			
						delete q; 
						return true;
				}
				else  
						return false;
}

int intList::Find(int elem)				//查詢值為elem的元素,返回該元素在連結串列的位置
{ 
				Node *p; 
				int j,data;
				p=L->next;  
				j=1;
				while (p!=NULL )
				{  
						data=p->data;
						if (data==elem)	break;
						p=p->next; 
						j++;
				}
				if (p!=NULL )	 return j;
				else					return 0;
}

int intList::Length() 			//返回連結串列長度
{  
				Node *p;
				int j;
				p= L->next; 
				j=0;
				while (p!=NULL )
				{  
				   p=p->next; 
				   j++; 
				}
				return j;
}

void intList::PrintList()						//輸出連結串列
{	
				Node *p;
				p=L->next;
				while (p!=NULL )
				{
				   cout<<p->data<<"  ";
				   p=p->next;
				}
				cout<<endl;
}

int main()
{	
	    	intList list;
			cout<<endl<<"向連結串列寫入資料成功!"<<endl;
			for(int i=1;i<10;i++)				list.Insert(i,i);	
			list.PrintList();
			cout<<"連結串列長度為:"<<list.Length()<<endl<<endl; 

			int zxl,delete_data=4;
			if( list.Remove(delete_data,zxl))		 cout<<endl<<"資料 "<<delete_data<<"刪除成功!"<<endl;
			else													 cout<<"刪除資料失敗l!"<<endl;
			list.PrintList();

			int find_data=6;
			int num=list.Find(find_data);
			if(num!=0)			cout<<"找到資料 "<<find_data<<"在連結串列的第"<<num<<"個位置。"<<endl;
			else					cout<<"沒有找到!"<<endl;

			return 0;
}

相關推薦

C++實驗 物件 (答案)

實驗二  類與物件 實驗目的和要求     1.掌握類、類的資料成員、類的成員函式的定義方式。     2.理解類成員的訪問控制方式。     3.掌握物件的定義和操作物件的方法。     4.理解建構函式和解構函式的定義與執行過程。     5.掌握過載建構函式的方

C++實驗2-物件1

一、問題及程式碼 /* * 檔名稱: C++ * 作 者: 尚超 * 完成日期:2016年3月11日 * 版 本 號:v1.0 * 對任務及求解方法的描述部分: * 輸入描述: * 問題描述: 輸入任意三個數,按從小到大輸出 * 程式輸出: * 問題分

C++基礎:物件(物件呼叫成員函式 this指標)

1.一個物件的this指標並不是物件本身的一部分,不會影響sizeof(物件)的結果。this作用域是在類內部,當在類的非靜態成員函式中訪問類的非靜態成員的時候,編譯器會自動將物件本身的地址作為一個隱含引數傳遞給函式。也就是說,即使你沒有寫上this指標,編譯器在編譯的時候

C++實驗3_3 物件(3)

五、實驗結果及分析 1. 構造了一個CPU! CPU開始執行! CPU停止執行! 析構了一個CPU! 3. #include <iostream.h> enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7

面向物件實驗一(物件)

一、實驗目的 1、掌握類和物件的定義和使用。 2、掌握友元函式的定義和使用。 3、理解並掌握常量的定義和使用。 4、掌握靜態的定義和使用。 二、實驗內容1、給定三個數21,15,22,設計行內函數int max(int a, int b)求兩個數的最大數,輸出結果“在21

c++上機實驗物件

實驗目的和要求 1. 掌握類、類的資料成員、類的成員函式的定義方式。 2. 理解類成員的訪問控制方式。 3. 掌握物件的定義和操作物件的方法。 4. 理解建構函式和解構函式的定義與執行過

C++面向物件實驗物件

C++實驗二:類與物件 一、實驗目的 類的建立和使用類來建立物件。 類的資料成員的宣告。 成員函式的宣告和定義。 Private,public訪問限定符的使用。 使用提供的公有的成員函式給物件

C++:物件

類中的預設成員函式 類中預設成員函式一共有六個:(1)建構函式(2)拷貝建構函式(3)解構函式(4)賦值操作符過載(5)取地址操作符過載(6)const修飾的取地址操作符修改。 一.建構函式 建構函式就是隨著物件被建立而自動呼叫的公有成員函式,有且僅在物件被定義時,自動呼叫一次,主要用於

c++實戰開發詳解(物件

一、面向物件程式設計介紹 (一)什麼是面向物件?      面向將系統看成通過互動作用來完成特定功能的物件的集合。每個物件用自己的方法來管理資料。也就是說只有物件內部的程式碼能夠操作物件內部的資料。

C++程式設計-物件

類 面向物件的程式設計方法,能夠較好結構化設計方法中遇到的問題。 面向物件的程式 = 類 + 類 + …+ 類 1、面向物件的程式設計方法: 將某類客觀事物共同特點(屬性)歸納出來,形成一個資料結構(可以用多個變數描述事物的屬性); 將這類事物所能進行的行為也歸納出

C++學習筆記 () ---- 物件

①、類和物件 類的定義,如下: class Student{ public: //成員變數 char *name; int age; float score; //成員函式 void say(){ cout<<

C++初學】物件定義建構函式

一.類和物件定義 class 型別名 { public: 公有成員(外部介面) private: 私有成員(只允許類內函式訪問,有後續操作) protected: 保護成員 二.建構函式 def:給物件進行初始化的函式。 gra: 函式名與類名相同; 無返回值(return); 1.委託

c++物件之預設成員函式

c++類與物件(二) 1.類的6個預設成員函式 一:建構函式 建構函式是一個特殊的成員函式,名字與類名相同,建立類型別物件時由編譯器自動呼叫,保證每個資料成員都有一個合適的初始值,並且在物件的生命週期內只調用一次。 建構函式是特殊的成員函式,其特徵如下:

c++:物件,封裝,訪問限定符,預設成員函式

到底什麼是類?什麼是物件?          類是一個抽象的概念,它不存在於現實中的時間/空間裡,類只是為所有的物件定義了抽象的屬性與行為。          類是一個靜態的概念,類本身不攜帶任何

C#中物件的關係,以及方法申明的static修飾符

C#中,類(class)的書寫,是class 類名稱:例如class Program這就是一個Program類,類理解起來就是同一類事物,具有同樣的特性,就如同我們常說的人類,鳥類,這樣具有相同特性和行為的一類事物的統稱,在程式設計中這種特性我們可以把它用一些方法功能來表示,例如程式:

c++學習總結(三)——物件

一、心得感悟     c語言的課程學習後,開始c++的學習,首先就是學習類。在學習類時,類的使用與c語言有著極大的差別,一開始學習十分別扭。c語言的學習直接定義幾個形參、函式就可以寫程式了;而到了c++學習,關於類,首先必須定義類。具有相同性質和功能的東西構成的集合,通常歸成一

C++:物件(最終)

前兩篇關於類與物件的部落格,都是類與物件中不可或缺的物件,這篇就是在前兩篇的基礎上,再對類與物件進行補充。 一.簡識深淺拷貝 當我們進行拷貝造作函式,或者賦值運算子過載的時候,我們不給出這兩個函式,編譯器就會預設自動生成,預設對類進行位拷貝(按照基本型別進行值的拷貝)。 那麼編譯器給的到

C++:初識物件

在C++中,結構體不僅可以定義變數時也可以定義函式。 一.類的引入 struct student { int _age; char _name[20]; char _gender[3]; void init(int age, char* name, char* gender) {

C#】——物件

一、類和物件的區別 類:類是模型,確定物件將會擁有的特徵(屬性)和行為(方法),類是物件的型別。 類是抽象的概念,僅僅是模板,比如說“人”類 物件是一個能看得到、摸得到的具體實體 物件可以叫做類的例項(Instance) 類不佔記憶體,物件才佔記憶體 二、類的定

C++物件基本語法(1)

一、概述 1、什麼是物件 1、萬物皆物件。 2、程式就是一組物件,物件之間通過訊息交換資訊。 3、類就是對物件的描述和抽象,物件就是類的具體化和例項化。 2、通過類描述物件 類就是從屬性和行為兩個方面對