c++小结
&取地址运算符,修饰变量时为引用类型类似Java Reference
*取指针中的值
#include 预处理导入头文件
#define 在编译预处理时进行简单的替换,不作正确性检查
#typedef 编译时处理
字符串可以用c中的<cstring>或者c++中的<string> ;strcpy(s1,s2)将s2值copy到s1,strcat(s1,s2)链接s1和s2;
static 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。
extern 修饰的变量,可以在整个应用程序中访问
友元函数不是对象的属性,不需要用类名加::域修饰
class 类名{
//1、如果未声明构造函数,系统会自动生成一个无参数的构造函数,如果已经定义构造函数,则系统不生成默认构造
//函数。
//2、如果类内未定义拷贝构造函数,系统会自动生成一个拷贝构造函数。
//3、每个类中都有一个this指针。
//4、static 修饰的变量为静态变量,只初始化一次
public:
类名();//构造函数
类名( const 类名 &obj); // 拷贝构造函数
~类名(); // 析构函数
修饰符:
成员变量;
成员函数;
修饰符:
成员变量;
成员函数;
};//必须有分号
class A :public B:public C{
//A类继承B类,又继承了C类,c++支持多继承
//一个派生类继承了所有的基类方法,但下列情况除外:
// 基类的构造函数、析构函数和拷贝构造函数。
// 基类的重载运算符。
// 基类的友元函数。
}
//实现类方法
返回类型 类名::方法名(){}
c++中多态:被virtual修饰过的方法调用可以实现多态,没有被修饰时编译器看的是指针的类型,被virtual修饰是看的事指针的内容。
纯虚函数,virtual int area() = 0; 语句中=0表示没有函数体
*取指针中的值
#include 预处理导入头文件
#define 在编译预处理时进行简单的替换,不作正确性检查
#typedef 编译时处理
字符串可以用c中的<cstring>或者c++中的<string> ;strcpy(s1,s2)将s2值copy到s1,strcat(s1,s2)链接s1和s2;
static 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。
extern 修饰的变量,可以在整个应用程序中访问
友元函数不是对象的属性,不需要用类名加::域修饰
class 类名{
//1、如果未声明构造函数,系统会自动生成一个无参数的构造函数,如果已经定义构造函数,则系统不生成默认构造
//函数。
//2、如果类内未定义拷贝构造函数,系统会自动生成一个拷贝构造函数。
//3、每个类中都有一个this指针。
//4、static 修饰的变量为静态变量,只初始化一次
public:
类名();//构造函数
类名( const 类名 &obj); // 拷贝构造函数
~类名(); // 析构函数
修饰符:
成员变量;
成员函数;
修饰符:
成员变量;
成员函数;
};//必须有分号
class A :public B:public C{
//A类继承B类,又继承了C类,c++支持多继承
//一个派生类继承了所有的基类方法,但下列情况除外:
// 基类的构造函数、析构函数和拷贝构造函数。
// 基类的重载运算符。
// 基类的友元函数。
}
//实现类方法
返回类型 类名::方法名(){}
c++中多态:被virtual修饰过的方法调用可以实现多态,没有被修饰时编译器看的是指针的类型,被virtual修饰是看的事指针的内容。
纯虚函数,virtual int area() = 0; 语句中=0表示没有函数体
指向函数的指针
int sum(int a,int b){
return a+b;
}
int (*fuc)(int ,int);
fuc=∑
(*fuc)(2,3);
声明方式:函数返回类型(*函数指针变量)(参数列表);
调用格式:
(*函数指针变量)(实参列表);
函数指针类型前面介绍了函数指针变量的声明,那么函数指针类型如何声明呢?
在函数指针声明前面加个typedef就成了函数指针类型定义。- typedef int (*FnType)(int, int); // 声明一个函数指针类型
- FnType fb = ∑ // 定义一个FnType类型的变量,并赋值
- (*fb)(3, 5);