- 博客(35)
- 收藏
- 关注
原创 面向对象(C到C++的过渡笔记)
类的封装和控制访问封装是面向对象程序设计最基本的特性。封装有2层含义:(1)把属性和方法进行封装。(2)对属性和方法进行访问控制。默认情况下,类的属性为private。struct和class关键字区别:struct的默认属性为public。#pragma once// 只包含一次,类似于#ifndef __XX__ #define __XX__ #endif __XX__...
2018-03-31 23:38:26 131
原创 继承在接口中的简单应用
//container.h#pragma once#include<iostream>using namespace std;#define PI 3.14 class container{protected: double radius;public: container(double radius) { container::radius = radius;...
2018-03-31 23:29:01 141
原创 继承中的构造,初始化父类语法
继承中的构造,初始化父类语法://employee.h#pragma once#include<iostream>class Employee{public: Employee(); Employee(const long, const char*); virtual ~Employee(){} const char*getName()const; const lo...
2018-03-31 23:02:29 263
原创 重定义默认参数
#pragma once#include"employee.h"class Manager :public Employee{public: Manager(); Manager(const long, const char*, double = 0.0,int=0); ~Manager(){} void setMonth(int); void setMonthlySalary...
2018-03-31 22:15:53 1764
原创 多继承用于接口
#include <iostream>using namespace std;class Interface1{public: virtual int add(int a, int b) = 0; virtual void print() = 0;protected:private:};class Interface2{public: virtual int...
2018-03-30 21:25:39 134
原创 纯虚函数和抽象类
#include <iostream>using namespace std;//面向抽象类编程(面向一套预先定义好的接口)//解耦合class Figure //抽象类{public: virtual void getArea() = 0;//纯虚函数protected:private:};class Circle :public Figure{public: Circle(int...
2018-03-30 21:01:37 173
原创 子类的vptr指针
#include <iostream>#include<stdio.h>using namespace std;class Parent{public: Parent(int a = 0) { this->a = a; print(); } virtual void print() { cout << "我是爹!" <...
2018-03-30 20:22:19 200
原创 重载重写重定义
#include <iostream>using namespace std;//重写 重载 重定义//重写发生在2个类之间//重载必须在一个类之间//重写分为2类//1 虚函数重写 将发生多态//2 非虚函数重写 (重定义)class Parent{ //这个三个函数都是重载关系public: void abc() { printf("abc"...
2018-03-30 00:26:34 208
原创 虚析构函数
#include <iostream>using namespace std;//虚析构函数class A{public: A() { p = new char[20]; strcpy(p, "obja"); printf("A()\n"); } virtual ~A() { delete[] p; printf("~A()\n"); }...
2018-03-30 00:12:50 92
原创 多态原理探究
多态原理探究理论知识:Ø 当类中声明虚函数时,编译器会在类中生成一个虚函数表Ø 虚函数表是一个存储类成员函数指针的数据结构Ø 虚函数表是由编译器自动生成与维护的Ø virtual成员函数会被编译器放入虚函数表中Ø 当存在虚函数时,每个对象中都有一个指向虚函数表的指针(C++编译器给父类对象、子类对象提前布局vptr指针;当进行howToPrint(Parent *base)函数是,C++...
2018-03-30 00:05:36 118
原创 多态相关面试题
面试题1:请谈谈你对多态的理解多态的实现效果 多态:同样的调用语句有多种不同的表现形态; 多态实现的三个条件 有继承、有virtual重写、有父类指针(引用)指向子类对象。 多态的C++实现 virtual关键字,告诉编译器这个函数要支持多态;不是根据指针类型判断如何调用;而是要根据指针所指向的实际对象类型来判断如何调用多态的理论基础 动态联编PK...
2018-03-30 00:02:19 1056
原创 多态
#include <iostream>using namespace std;//HeroFighter AdvHeroFighter EnemyFighterclass HeroFighter{public: virtual int power() //C++会对这个函数特殊处理 { return 10; }};class EnemyFighte...
2018-03-29 23:43:38 81
原创 继承
继承中的构造,初始化父类语法:继承和组合混搭下的构造和析构原则: 先构造父类,再构造成员变量、最后构造自己 先析构自己,在析构成员变量、最后析构父类继承中的同名成员变量处理方法1、当子类成员变量与父类成员变量同名时2、子类依然从父类继承同名成员3、在子类中通过作用域分辨符::进行同名成员区分(在派生类中使用基类的同名成员,显式地使用类名限定符)4、同名成员存储在内...
2018-03-29 23:42:52 136
原创 继承访问级别
public:在类外、类内均可使用。protected:在是为了在家族中使用,是为了继承,类外不可用。private:只能用方法访问。
2018-03-29 21:25:27 220
原创 实现一个字符串类
//MyString.h#include <iostream>using namespace std;//c中没有字符串 字符串类(c风格的字符串)//空串 ""class MyString{ friend ostream& operator<<(ostream &out, MyString &s); friend istream&...
2018-03-27 23:57:12 1601
转载 C++strcmp函数实现
函数原型:int strcmp(const char *dest, const char *source) ;返回值:返回整数值,如果dest > source,则返回值大于0,如果dest = source,则返回值等于0,如果dest < source ,则返回值小于0。字符大小是按照字符的字典序列进行排列的。参数说明:都是以''/0''为结束符的字符串实现; int strcmp...
2018-03-27 21:56:41 2790
原创 C++对C的函数扩展之内联函数
内联函数(inline)。内联函数必须和函数体的实现在一起。(不能单独声明函数名)内联函数没有普通函数的压栈、跳转、返回的开销。内联函数是对编译器的一种请求。内联函数由编译器处理。宏代码片段由预处理器处理。内联函数不能有任何形式的循环语句,不能有过多的条件判断语句。...
2018-03-24 17:41:45 223
原创 指针的引用
//指针的引用#include"iostream"using namespace std;struct Teacher{ char name[64]; int age;};int getTeacher(Teacher **p){ Teacher *tmp = NULL; if (p == NULL) { return -1; } tmp = (Teacher*)ma...
2018-03-24 17:06:58 103
原创 C++中的引用
C++新增了引用引用可以看做一个已定义变量的别名。引用是C++语法的范畴#include<iostream>using namespace std;void main(){ int a = 10; int &b = a;//普通引用必须要初始化 b = 100; cout << "a:" << a << endl;//outpu...
2018-03-24 16:07:59 118
原创 C++基础笔记(3)
const分配内存的时机:在编译器编译期间。const是替换#define的一种手段。const和define的相同和区别:#include"iostream"using namespace std;#define d 20 //在编译预处理阶段处理,宏定义只提供文本替换 //const常量是由编译器处理的,提供类型检查和作用域检查void main(){ //int a ...
2018-03-24 14:34:53 87
原创 C/C++中的const
struct Techer{ char name[64]; int age;}int operatorTecher01(const Techer *pT){ //pT->age=10;//错误,指针指向的值不能被修改 return0;}int operatorTecher02(Techer* const pT){ pt->age=...
2018-03-24 12:16:00 134
原创 C++基础笔记(2)
C++中所有变量和函数必须有类型C++新增bool类型,给bool赋值正数、负数,其值为1;C中的默认类型在C++中不承认:如int f()表示接受任何类型的参数C++对三目运算符的增强:在C语言中表达式的运算结果放在寄存器中,表达式的返回值是一个数;在C++中表达式返回的是变量的自身。C语言中三目运算符不能当左值,C++中可以。如:void main(){ int a = 10, b = 20;...
2018-03-24 11:38:56 202
原创 C++对struct关键字的加强
C中不认为struct是一种数据类型,所以定义变量时:struct Techer t1; C++为:Techer t1;C++中可以为struct加“public”“protected”等关键字
2018-03-24 11:05:34 308
原创 Register关键字
register关键字请求“编译器”将变量放到寄存器里;register变量不能在寄存器中取地址,但C++编译器可以编译通过C++对register关键字做了优化,即使不添加register,C++也会做优化。如for(int i=0;i<10;i++),会对i做优化。...
2018-03-24 10:57:17 218
原创 C++基础笔记
数据类型的本质为:固定大小内存块的别名。类把属性和方法做了一个封装面向过程:数据结构+算法面向对象:从现实世界抽象出模型C/S: Client/Server B/S: Browser/Server命名空间的使用:using namespace std; using std::cout;“.c”文件使用C编译器;“.cpp”文件用C++编译器C中所有的变量必须在作用域开始的地方定义...
2018-03-24 10:55:33 85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人