C++クラスの簡単な使用

8064 ワード

クラス(構造)とオブジェクト
1、クラスの一般形式:
class/struct    :       
{
	    ;
	...
	//     
	  (){}
	//     
	~  (){}
	//        
	    
	...
	public:
	//public              ,       。
	...
};

一、構造関数
1、コンストラクション関数はリロードでき、使用シーンによってオブジェクトの初期化方法が異なります.
	    :          ,                      
	    :            ,     ,         ,    
		              ,       ,               
	  ,              。
class String
{
	char* c_str;
public:
	//     
	String(const char* str = NULL)//    NULL
	{
		if(NULL == str)
		{
			c_str = new char[1];
			*c_str = '\0';
			return;
		}
		//      
		c_str = new char[strlen(str)+1];
		//      
		strcpy(c_str,str);
	}
}
	             ,         ,           。

		  :   “      XX  ”,        ,          , 
	                    C++  ,             
	      ,                  。

2、単一パラメトリック構造関数と暗黙変換
		              ,   “     =   ”           ,  
	      ,            ,           ,       
	   explicit   。

3、特殊な構造関数:コピー構造
		                           。           
	           
	              ,                。
	          ,          ,    ,             
		          ,   ,         
		class String
		{
			public:
					String(const String& str)//    
					{
						//      
						c_str = new char[strlen(str.c_str)+1];
						//     
						strcpy(c_str,str.c_str);
					}
		}

二、初期化リスト
          ,            。
class Student
{
	const char* name;
	const char sex;
	short age;
	Student(char* n,char s,short a):  (  ),  2(  )....
};
1、   const        。
2、           ,    。
3、                        。
4、       ,           。
	      :    {v1,v2,v3}
	            -std=c++0x   -std=gnu++0x    
5、                  ,           。

三、thisポインタ
    :                    ,           ,             ,
	                         。
C++                 (    ),           ,              
       
	            、  、       this  ,      (             
  this    ),       。
	   this                   。
 、const  const  
	       const              ,   const         ,         
     ,            const this ,      ,       。
	              const     ,           const,    this    
const  ,    const    。
	const      const  ,      const             。
         const             :
	1、const           ,       const     
	2、        mutable   ,      const      。

五、賦値構造
                          。
Student stu1,stu2;
stu1 = stu2;     
1、            、    
	                      
	                               
	                    
2、                      ,              
              。
class Test
{
	char* str;
	public:
	//     
	String& operator= (const String& str)
	{
		/*
		if(this == &str)
		{
			cout << "SB" << endl;
			return *this;
		}

		//      
		delete[] c_str;

		//      
		c_str = new char[strlen(str.c_str)+1];

		//      
		strcpy(c_str,str.c_str);

		return *this;*/

		if(this != &str)
		{
			String temp(str);
			swap(c_str,temp.c_str);
		}

		return *this;
	}
};


六、構造関数(構造関数と構造関数は私有に設定できない)
1、                   ,         ~。
2、        、     、    。
3、                。(   ,   )
4、                 ,                。
5、              ,          、      ,
            ,                  。
6、       
	a)      
	b)       
	c)            ,       。
	d)           ,         。