C++クラスの簡単な使用
8064 ワード
クラス(構造)とオブジェクト
1、クラスの一般形式:
一、構造関数
1、コンストラクション関数はリロードでき、使用シーンによってオブジェクトの初期化方法が異なります.
2、単一パラメトリック構造関数と暗黙変換
3、特殊な構造関数:コピー構造
二、初期化リスト
三、thisポインタ
五、賦値構造
六、構造関数(構造関数と構造関数は私有に設定できない)
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) , 。