控制台输出:cout << "Hello word!";
控制台输入:cin >> x;
类型转换运算符:
强制类型转换是极其危险的,通过使用以下运算符限制转换:
static_cast、reinterpret_cast、const_cast、dynamic_cast
旧式c语言类型转换具有易用性特点,c++中不推荐使用,但支持向下兼容:
(类型) 表达式
lambda函数的闭包语法:
[闭包] (参数) {语句组}
捕获占位符的可能值:
[]、 [=]、[&]、[参数]、[=,参数]、[&,参数]
constexpr函数:
当把constexpr关键字应用于函数,回事编译器尽可能把对该函数的调用当作编译时常量。
编译时常量:它们的值完全是在程序运行之前计算的,其计算不增加程序的执行时间。
引用:
int a(int n):被引用的n的值不改变
int a(int &n):加上取地址符&,n的值会永久性改变
用const关键字修饰的变量,可防止传递的值被更改
指针:
(*p)++:引用p,然后增加它指向的之
*p++相当于*(p++):使p指向在内存中的下一个项目
只能指针:
作用:防御动态分配的内存泄漏
shared_ptr:共同拥有一个内存资源。在内部保持一个引用计数,仅当资源的引用计数变为0是才能被删除。不能被用于指向数组。
unique_ptr:拥有一个不可以与另一个指针共享的内存资源。指针一旦被删除,该资源就被删除。此指针类型可以用于动态创建的数组。
weak_ptr:类似于shared_ptr,但它不增加或减少内存资源的引用计数。
c++的类与java不同:
声明类的方法有三种:struct、class、union
类的声明:
class Point{
public://公有访问
void set(double x);
double get();
private://私有访问
double x;
}
类的定义:(有两种)
1、内联定义
class Point{
public:
void set(double newx) {x = newx};
double get() { return x; };
private:
double x;
}
2、定义之外
class Point{
public:
void set(double newx);
double get();
private:
double x;
}
void Point::set(double newx){
x = newx;
}
double Point::get(){
return x;
}
子类:
class 类名 : public 基类, public 基类... {
声明
};
重载:
class Mammal () {
public:
virtual void sound();
};
class Dog: public Mammal () {
public:
void sound();
};