分类目录归档:语言

关于对C++ 类的一些操作


只能在堆上生成

为什么需要类只在堆上生成

一般来说,栈是存储局部变量和方法调用的一种内存区域,而堆事用于动态分配内存的另一种内存区域。主要原因有几点

  1. 对象生命周期:在堆上创建对象可以延长其生命周期。堆上的对象不会受限于其所在方法或作用域的接受。相反,他们在方法结束之后可以先继续存在,并且可以在其他部分使用,适合于多个方法或者多个对象之间需要共享数据。
  2. 动态大小:堆允许动态分配对象的大小,在堆上创建对象的时候,可以根据需要分配内存,适合于处理链表或者树之类的动态数据结构或者变长数据。
  3. 对象共享:在堆上创建对象可以实现对象共享。多个对象可以引用相同的堆对象,节省内存。适合于需要复制大量数据。

Read more

关于对象的一些特性


关于三五原则

一个类通过定义三种特殊成员函数来控制这些操作:拷贝构造,拷贝赋值,析构函数。

拷贝构造函数

一般来说对于普通对象,赋值和复制比较简单,对于类对象,由于其内部结构复杂,存在各种成员变量,需要专门的拷贝构造函数,如果没有拷贝构造函数,那么编译器会自动帮我们定义实现一个构造函数。

使用场景

  1. 值传入 ,需要创建一个临时对象,有赋值操作。
function (Object obj){}
  1. 在函数体内部构建的类对象返回,类对象返回后是直接赋值操作
Object function(){
 Object obj;
 return obj
}
  1. 一个对象需要另外一个对象初始化,直接赋

Read more

关于面向对象


介绍

面向对象的基本特征:封装,继承,多态

封装

将成员的属性和实现过程设置为私有,仅透过对外暴露接口函数,数据隐藏封装在内部,同时来说将函数定义和类声明放在不同的文件也是一种封装。总的来说封装就是把客观事物封装成抽象类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的信息进行隐藏,默认是private;可以拥有的权限有:public,protected,private;

  1. public 成员:任意实体都可以访问 。
  2. protected成员:子类和本类成员函数都可以访问。
  3. private 成员: 只允许本类的成员函数,友元类或友元函数访问。

继承

  1. 如果一个类是由另外一个继

Read more

C++ 与C , const 关键字


本文用的是docker C++镜像 twoixter/gcc48-dev:latest

C++ 与C 有什么不同

很多人认为 C++是C 的超集,可以通过extern C 来处理C++ 与C的函数接口,实现C++ 调用C函数,从某种程度上来说,C++是在C语言基础上 进行拓展和改进,所有合法的C程序都是合法的C++程序。但是个人还是认为他们是两种语言。 1. 面向对象: C++是一种面向对象的语言,支持类,对象,继承,多态等面向对象编程的特性,C语言面向过程语言,没有直接面向对象编程。

  1. 标准库: C++提供了一个丰富的标准库,包括:容器,算法,输入输出,字符串处理,异常处理等功能,C

Read more

关于函数指针


函数指针

函数指针是指向函数的指针变量,可以将函数作为参数传递给其他函数,也可以在程序中动态选择调用不同的函数。

一般形式

typedef int (*FunctionPtr)(int, int);//定义一个函数指针类型
FunctionPtr ptr;//声明一个函数指针变量
int add(int a, int b)
{
    return a+b;
}
ptr = add; // 直接使用函数名赋值
ptr = &add; //使用地址赋值

使用场景

  1. 将函数作为参数传递给其他函数
void doOperation(int a, int b, FunctionPtr o

Read more