
C/C++基础学习
TemetNosce
认识自己 改变自己
展开
-
C++的三种访问权限与三种继承方式
三种访问权限我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是 public:在本类中,类外,继承都可以使用 protected:在本类和继承中使用,类外不可用 private:只能在本类中使用,类外,继承不可用 要理解它们其实也很容易,看下面了一个例子。 父类:class Person { public: Person(const string& name, in转载 2017-07-12 00:08:41 · 584 阅读 · 0 评论 -
C++多态性
假设我们有三个类Person、Teacher、Student它们之间的关系:Teacher、Student继承Person。 Demo1#ifndef __OBJEDT_H__ #define __OBJEDT_H__#include <string> #include <iostream>class Person { public: Person(const string& name,转载 2017-07-12 08:11:57 · 317 阅读 · 0 评论 -
浅谈C++多态性
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,参数类型不同,或者两者都不同。编译器会根据这些函数的不同列表,将同名的函数原创 2017-07-12 08:42:44 · 409 阅读 · 0 评论 -
重载 重写(覆盖) 隐藏
基本概念:重载在一个类中被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确 定调用哪个函数,重载不关心函数返回类型。 重写(覆盖):其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(返回值不同的协变返回类型也可以构成重载)。 两个方法分别位于派生类与基类 基类函数必须有 virtual 关键字,不能有 static ;子类方法有无原创 2017-07-12 22:54:48 · 350 阅读 · 0 评论 -
static
面向过程:静态局部变量 静态局部变量有以下特点: 该变量在全局数据区分配内存; 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; 它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;原创 2017-07-13 22:25:37 · 292 阅读 · 0 评论 -
const
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、Const作用如下表所示: No 作用说明 参考代码 1 可以定义const常量 const int Max原创 2017-07-13 22:54:52 · 293 阅读 · 0 评论 -
new 和 delete 背后机制
定义一个类 A:class A { public: A(int v) : var(v) { fopen_s(&file, "test", "r"); } ~A() { fclose(file); }private: int var; FILE *file; };很简单,类 A 中有两个私有成员,有一个构造转载 2017-04-22 15:00:48 · 376 阅读 · 0 评论 -
C++内存模型
C语言中的内存机制在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。(先进后出) (2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。如果程序员忘记free了,则会造成内存泄露,程序结束时该片内存会由OS回收,但程序只要不结束,就有可能造成内存泄露。注意它与原创 2017-04-22 19:10:31 · 1178 阅读 · 0 评论 -
堆内存分配与释放
int *pi= new int(0);//分配内存,并初始化 当不使用pi时,要手动释放内存。 delete pi; 注意:pi指向的内存空间释放了,但是pi本身并没有撤销,该指针所占空间并未释放,该指针还是指向原来的地方。原创 2017-04-22 20:45:15 · 692 阅读 · 0 评论 -
const static const static成员变量的初始化
class Test { public: Test():a(0){} enum {size1=100,size2=200}; private: const int a;//只能在构造函数初始化列表中初始化 static int b;//在类的实现文件中定义并初始化 const static int c=1;//类中初始化原创 2017-07-13 23:02:55 · 511 阅读 · 0 评论