C ++を知っています
コンパイルとステップ実行
(メモリにローダ)エディタ(.CPP .H)コンパイラ(フォーム.OBJ)リンクファイル(.exe)の実行をデバッグ
関数のプロトタイプ int area(int,int); 等价于 int area(int a,intb);
インタフェースのJava類似し
た名前空間 using namespace std;
プリプロセッサ 符号 "#"开头
参考文献
のキーワード&などType &a=object;
のオブジェクトへの実践的なポイント
- あなたは初期化する必要があります作成する場合
- オブジェクト参照は、初期化後に変更することはできません
- それはnullにすることはできません
const修飾子の
int * const p=&a;
メモリアドレスへのポインタはアドレス値を変更することができ、変更することはできません
const int * const p=&a;
アドレス値を変更することはできませんし、
動的なメモリ割り当て
の新しいキーワードとしてType *p=new int
//何の初期値Type *p=new int(10);
//初期値int *p1=new int[10];
//は左ポインタ式に配列を初期化しません
リリースメモリ
delete p;
解放して//配列delete[] p
* Pのボイド ; //ポインタPは、不確実性の種類を表し
Stringオブジェクト
string str1="i am lili!"; //类与java不一样 , 类不需要大写
string str2("who are you!);
string str3=str1.substr(2,2); //截取第2个字符
int i=str1.find("am",0) //第0个开始查找 字符串在主串的位置
戻り値
int & index(int i);
//関数は参照を返し
类型标识符 * 函数名(参数列表);
、//ポインタを返す
string input(const int m)
//戻りオブジェクトを
インラインキーワードは、
関数の本体とCコンパイラが修正ファンクションキーを実行するための実際の関数呼び出し、代わりに呼び出し式がありません。
パラメータのデフォルトの関数
で定義したプロトタイプでのvoid f(int a,int b=1,int c=2 )
右側に書かれた//デフォルトパラメータ(マッチが左から右にあるので、書き込みには残っていない)
呼び出しが引数を指定された場合、与えられていない場合は引数で、その後、事前に宣言した使用デフォルトのパラメータ値。
int add(int x=5,int y=6){}
制御対象の新しいライフサイクル作成ポイント* PT1 =新しいポイント。
コピーコンストラクタ
クラス名::クラス名(const参照オブジェクトクラス名&名)
- また、関数の戻り値の型を指定することはできませんコンストラクタです。
- 唯一つのパラメータは、同じ種類のオブジェクトへの参照です。
- いいえクラスはコピーコンストラクタを持っていません
- デストラクタ
- ポイント();
- クラスは、オーバーロードすることができない、引数がない、一つだけを持っています
- オブジェクトを取り消し、デストラクタを呼び出します。
- 戻り値の型を指定しないでください
関数テンプレート template <class T> 或 template <typename T>
template <class T> T max(T m1,T m2){
return (m1>m2)?m1:m2;
}
値で(コピー)
void sendValue(char ch){
cout << ch << endl;
cout << (ch=='a') << endl;
}
伝記アドレス(元アドレスを変更します)
void sendAddress(int * px,int * py){
cout << px<< " " << py <<endl;
}
参照渡し
void sendAddress(int &a,int &b){
cout << a<<" "<< b<<endl;
a=100;
}
クラスとオブジェクト
クラスの宣言
class 类名{
函数和数据 // 不说明访问权限,默认是私有的
private:
私有数据和函数 //只可在本类中访问
int a,b; //类体中不允许对数据成员初始化 如 int a(2),b(3); 是错误的 产生具体对象时才有意义
public:
公有函数和数据 //通过该访问权限修饰的函数来访问私有
void Display(); //函数原型(声明函数)
void Setab(int m,int n){ //类体内定义 默认为inline
}
protected:
保护数据和函数
}
返回类型 类名::成员函数名(参数列表){ //在类体外定义成员函数 需要类名和作用域运算符 ::
函数体 //内部实现
}
inline 返回类型 类名::成员函数名(参数列表){ //在类体外定义成员函数(内联)
函数体 //内部实现
}
クラスを使用してオブジェクト
Point p1,p2;
Point *p =&p1;
Point &p3=p2;
p1.Setab(5,10); //对象和引用 调用函数
p->Display(); //指针访问
p3.Setab(1,2); //引用 调用函数
静的メンバ
静的メンバーは初期化されなければならない
データ型クラス名::静的データメンバ名=初期値;
クラスvivoで初期化:
S int型静的;
クラスの初期化試験管:
int型ポイント:: COUNT = 0;
フレンド機能の
フレンド関数は、現在のクラスの独立した外部関数で、
クラスのすべてのメンバーがそれにアクセスすることができます
友人はクラスまたは関数であることができます
クラスポイント{
プライベート:
公共:
友達ダブル距離(&ポイント&ポイント); //フレンド関数の宣言
}
二重距離(XXXX){} //フレンド関数を定義します
constオブジェクトの
定数部材(しばしば引用された通常のデータメンバ(コンストラクタのみ初期化)、静的データメンバしばしば(()インビトロクラスの初期化中)
のconst
メンバ関数- >メンバ関数は、通常、
オブジェクト- > //オブジェクトは、多くの場合、呼び出すことができ彼は多くの場合、メンバ関数だ、あなたは他のメンバ関数を呼び出すことはできません
継承と派生
単一継承
クラスの派生クラス名:アクセス制御基本クラス{
P
P
P
}
コンストラクタの実行順序:
。コンストラクタは、基本クラスのメンバー1.コール基底クラス(左から右に、基本クラス)を初期化
下に初期化2.追加メンバー
派生クラス3ランのコンストラクタの本体を
クラスはのメンバー保護された
保護された
のと同じように公共のメンバーにアクセスして、基本クラスのアクセス保護されたメンバーに、派生クラスを
基本クラスのアクセス保護されたメンバーとアクセスプライベートメンバに同じ派生クラスのオブジェクト
ベース・クラス・オブジェクト・ベース・クラス(派生クラスオブジェクト)外部機能にアクセスするために、派生クラスのベースクラスのメンバ関数
プライベートアクセスできないアクセスできないアクセスできない
保護保護アクセスできないアクセスできない
パブリックアクセスパブリックアクセス
プライベート派生:サブクラスプライベートクラス派生祖父、祖父クラスのメソッドは、孫クラスを直接呼び出されることはありません
派生保護:クラス祖父派生児童保護クラスは、祖父はサブクラスまたは保護で保護されたクラスのメンバプロパティです。(民間非継承)
あいまいさと支配する規則
関数の分母の同じ名前のスコープ定義演算子とメンバ名のアプリケーション、派生基本クラス
obj.Base1 ::楽しい()obj.Base2 ::楽しいです ()
仮想関数