1.hello world
#include <cstdio> int main() { printf("Hello World! \n"); return 0; }
#include <iostream> int main() { std::cout << "Hello World!" << std::endl;//cout, endl, using namespace std return 0; }
g++ Hello1.cpp -o Hello1
2.librairie standard c++
- librairie standard C
- librairie de flux d'entree-sortie
- STL(standard template library)
- conteneurs
- foncteurs
- iterateurs
- algorithme
3. class
由变量和方法组成
#include <cmath> class Sinusoide { private: double myA, myB;//variable public://:和public之间没有空格 Sinusoide(double aA, double aB) : myA(aA), myB(aB) {}//initiation constructeur后面没有分号 double eval(double x) { return myA*std::sin(x) + myB*std::cos(x); }//methods };以;结尾
4.constructeur
和class同名
无返回类型
不存在时,编译器以任意值初始化类
可以有一串参数
在fonction之前,以参数初始化内部变量,以声明的顺序输入
5.在栈pile里初始化
double x(5.0); //ou double x = 5.0; Sinusoide s(2.0, 3.0); //ou Sinusoide s = Sinusoide(2.0, 3.0);
6.在堆tas里初始化
double* xPtr = new double(5); Sinusoide* sPtr = new Sinusoide(2.0, 3.0);
return sPtr->eval(x); //evalue la sinusoide en x7.desctruction
栈里的变量可以自动销毁
堆里的变量需要人为释放
delete sPtr; //libère la mémoire allouée8.继承(可继承多个类)
扩展, 多态
class BaseClass {
public:
void method() {
std::cout << "from Base" << std::endl;
}
};
class DerivedClass : public BaseClass { public: void method() { std::cout << "from Derived" << std::endl; } };
int main() { BaseClass* ptr = new DerivedClass(); ptr->method(); }输出 from base, 如果在Baseclass的method前加virtual,则可以激活动态链接,输出from derived
9.class abstraite
class FonctionDeRDansR { public: virtual double eval(double x) = 0;//纯虚函数 };10.模板template
template <class T> T min (T a, T b) { return !(b<a)?a:b; }11.符号重载