1、命名空间
【C++】命名空间namespace详解_Baymaxly的博客-优快云博客
2、引用
C++引用_c++ 引用_ZHOUZH_093的博客-优快云博客
3、重载
4、C语言中的malloc内存申请,free内存释放
C++使用new,delete
int main(int argc, char *argv[])
5 {
6 char *p = (char *)malloc(10);
7 strcpy(p, "hello");
8 printf("%s\n", p);
9
10 int *intp = new int;
11 *intp = 10;
12 printf("%d\n", *intp);
13 delete intp;
14
15 char *pc = new char[10];
16 strcpy(pc, "dalong");
17 printf("%s\n", pc);
18 delete [] pc;
19
20 return 0;
21 }
5、C语言模仿面向对象
#ifndef _ARR_
#define _ARR_
typedef struct arr{
int data[100];
int tail;
void (*show)(struct arr *arr);
void (*addtail)(struct arr *arr, int data);
}ARR;
void init(struct arr *arr);
#endif
static void show(ARR *arr){
int i = 0;
for(; i < arr->tail; i++){
printf("%d\t", arr->data[i]);
}
puts("");
}
static void addtail(ARR *arr, int data){
arr->data[arr->tail++] = data;
}
void init(ARR *arr){
arr->tail = 0;
arr->addtail = addtail;
arr->show = show;
}
int main(int argc, char *argv[])
{
ARR arr;
init(&arr);
int n = 10;
while(n--)
arr.addtail(&arr, n);
arr.show(&arr);
return 0;
}
5、C++类的声明
class Animal
4 {
5 public:
6 void run();
7 void setdata(int data){
8 legs = data;
9 }
10 int getdata(void);
11
12 private:
13 int legs;
14
15 };
16
17 int Animal::getdata(void){
18 return legs;
19 }
21 void Animal::run(){
22
23 printf("run run run\n");
24 }
25
26
27 int main(int argc, char *argv[])
28 {
29 Animal a;
30 a.setdata(2);
31 printf("legs=%d\n", a.getdata());
32 a.run();
33 return 0;
34 }
6、类的构造函数
名字和类名一样,在实例化一个对象的时候,会自动调用构造函数。
如果自己写了就调用自己写的构造函数,如果自己没写就调用默认的构造函数。默认
构造函数类型:
默认构造函数
拷贝构造函数Animal(const Animal &x);
class A{
public:
A(){
printf("A()\n");
p = new char[10];
}
#if 1
A(const A &x){
printf("A(const A &x)\n");
p = new char[10];
}
#endif
~A(){
printf("~A()\n");
delete [] p;
}
private:
char *p;
};
int main(int argc, char *argv[])
{
A x;
A y = x;
// y = x
return 0;
}
赋值构造函数
作用:类的初始化。
构造函数可以重载。
7、析构函数
~类名
作用:对象销毁的时候,调用析构函数。
8、类应该具有:
构造函数(资源申请、设备打开)、析构函数(资源释放、设备关闭)、成员方法、数据成员。
3 class Animal
4 {
5 public:
6 Animal(){
7 printf("gouzaohanshu......\n");
8 }
9
10 Animal(int data){
11 legs = data;
12 }
13
14 ~Animal(){
15 printf("woshixigouhanshu....\n");
16 }
17
18 void run();
19
20 void setdata(int data){
1,1 顶端
21 legs = data;
22 }
23
24 int getdata(void);
25
26 private:
27 int legs;
28
29 };
30
31 int Animal::getdata(void){
32 return legs;
33 }
34
35 void Animal::run(){
36
37 printf("run run run\n");
38 }
40
41 int main(int argc, char *argv[])
42 {
43 Animal a(100);
44 printf("legs=%d\n", a.getdata());
45 a.setdata(2);
46 printf("legs=%d\n", a.getdata());
47 a.run();
48 return 0;
49 }
9、C++普通成员函数
const数据成员只在某个对象生存期内是常量,而对于整个类型而言数据是可变的。
静态成员:属于某个类,而不属于某个对象。 也就是不用new对象,直接通过类可以使用static修饰的部分。
10、友元
故意让别人可以使用私有成员。friend