面向对象的精髓:
主函数其实就是对于类的元素和动作的重新组合来进行一项活动。
一个思想概念:程设是清楚的,完美的。
数学是清楚的,是完美的。
物理是有趣的,尤其是量子物理
生物是清楚的,尤其是基因
外语是完美的,……
*******************************************************************************
外界的调用 成员函数 protect的不能被外界调用,但是可以是子类调用
限定符 对象的定义和结构体一样,可以附在后面 默认是私有的(Private)
类中的成员函数之间可以调用的
在类外定义成员函数,但是在类内部要首先及进行申明
::作用域限定符 全局函数
Inline内置函数(其实是把简单的代码段嵌入进来)
成员函数指定为内置函数的方法 头文件
其实是与OS交互的语言,内部的编译调用理解的
This指针 成员函数在存储上其实和对象是分离的
通过对象的引用变量来访问对象的成员
定义引用变量
time t1;
Time &t2=t1;
定义类的对象的方法一般是在主函数里
主函数运行的过程其实就是多个对象在行为而产生的时空状态的改变 (其实就是通过一个个消息)
头文件里是类的定义,但是没有类里函数的定义,防止成员函数闭多次调用要经行多次编译
类库
类对象的初始化有一种是和结构体很像的 time t1={14,15,16}; 14 15 16分别对应类的变量
含有主函数的类就是主类,要运行一定有个主类
一个类里要设计自己的变量的set函数吗。不需要
构造函数(与类同名字函数)它是特殊的成员函数
构造函数的内容自己设计
构造函数当然也是可以在类外定义的,和普通的成员函数一样,但要记得在类内申明
构造函数也像消息一样,用于改变状态,无返回值
类有构造函数是必须的,当定义一个类对象时,就会调用构造函数,并会有初值,然后通过交互改变初值,但是其实还是有交互函数set() show()
C++程序的结构就是:有#(用于包含系统文件进来)
有多个类及其内部结构
有一个主函数,一般主函数是在最后
******这些是顺序关系,用于改变计算机时空状态,这是程序运行的结果
要深入领会程序不同写法之间的区别
构造函让主函数简单,主函数里面不需要定义函数
构造函数不能被调用,在定义对象的时候自己自动执行
构造函数可以带参 在类外经行定义构造函数
构造函数的参数在对象定义的时候给出
参数初始化表:
box(int h,int w,int len):height(h),width(w),length(len) { } //注意后面的{}不能省
类可以由多个构造方法,但是名字都是一样的,就是重载
默认构造函数 (缺省构造函数)
构造函数的默认参数
默认参数构造函数是不能重载的
析构函数:对象结束时候自动执行的 ~box()
对象的全局和局部
题目是什么,其实就是知识的变相啊
一个类只能有一个析构函数
析构函数是类必须有的,可以自己设计,可以补充
析构函数就是插销对象的内存之前做的工作,完成清理工作
Static局部对象在函数调用后不释放,所以不进行析构 ,而只有在mian 或是exit函数调用后使用析构
在一个函数中定义一个对象,调用结束时则进行析构函数
有全局对象的析构,析构是作用域完成时候才会调用
用new创建一个对象时,用delect释放内存时,自动调用该对象的析构
当显式的定义析构函数时候,对象执行之后会显示出来
默认的时候是不会显示出来,其实析构函数的总是存在保证了内存的安全保障
析构函数的调用和构造函数的调用是栈结构,顺序是相反的(对象的作用域是很重要的,根据作用域的不同,又是不一定的)
复制构造函数 转换构造函数
可以有静态对象
对象数组 (多个对象组成数组)
Student stud[3]; 类的对象数组
对象的构造函数的参数若一个,则:
Student stud[3]={3,4,5};
指针可以指向对象(对象指针) Time *pt; //指向类的指针
(*Pt).hour pt->hour是一样的效果,指向对象的成员变量hour
定义一个函数指针 void (*p) ( );
P=fun;
(*p)( );//通过指针调用fun函数
Void (Time::*p2)( );//定义指向成员函数的指针
P2=&Time::get_time;//给该指针赋值 ***这两句可以合一
This指针,是在成员函数里的指针,指向本类对象 this可以是显式写一般是隐式(编译系统补充的)
常对象 Time const t1(12,34,46);
常对象不能调用其他非常成员函数
常成员函数 void get_time( ) const;
Mutable int count; //这时候就可以用常成员函数来修改该数据变量了
指向对象的常指针 指向常对象的指针变量 指向常变量的指针
Const Time *p=&t1; const char *p;
Time &t //t是time对象的引用 const Box&b;
New box;//动态建立对象,这个对象存在但是不能用,是无名对象,它的返回值是指针
,通过指针来访问这对象
对象之间的赋值 t1=t2; 对象之间的赋值只是成员变量,不是成员函数
Box box2(box1);
或者 Box box2=box1;
复制构造函数是隐形的
类中的静态数据成员代表产生的对象的该属性是一样的
静态的就是公共的。
静态数据成员可以用类名或者是对象名来引用
静态成员变量在类外部初始化,不能通过参数初始化表初始化
Int Box::length=3;
静态变量是在类层次的
公用的成员函数可以引用静态变量
可以在函数中定义类 静态变量起了全局变量的作用,但是和全局变量不同,要好
静态成员函数的调用
Box::volume();
A.volume();
静态成员函数的作用就是处理静态变量
默认情况下,静态成员函数不能访问本类中的其他非静态成员
成员函数都有this指针,但是静态成员函数没有
友元函数 友元类
友元函数在类外定义,在类内申明, friend void display( );
这样该函数就可以访问类的私有变量了
友元可以是其他类的成员函数
* (&a)=* p 实际是a的值
内存寻址方式 void *p=&a;
常量指针 int *const p;
常引用 const int &ra=a;
指向常量的指针常量 const int * const p=&a;
逻辑 关系 条件 提取符和插入符 插入运算符的级别低 endl=’ ’
Cout<<oct<<a<<’+’<<b<<’=’<<c<<endl; 八进制
顺序 选择 循环
Goto niu;
Niu: *****; 他们在同一个函数体中
匿名对象 内联函数
返回引用类型的函数 int & max(int &a,int &b);
CFC 命名空间using namespace std; 浩强工作室 未名湖畔 清华园
类型识别(RTTL) 虚函数
#include <iostream>
Using namespace std; (其实就是包)
Int main()
{ cin>>a>>b;
Cout<<”this is a C++ ”; <<插入运算符 cout是流对象
也可以用printf(“****”);
Count<<” ”<<sum<<endl; endl(换行) 输入必须空格控制输入参数
Return 0;
}
类和函数都是在std命名空间里的
Class student
{private:
****
Public:
*****
};
友元类 控制流setw(6)————iomanip
C++输出输出其实是串控制的形式
Const int a=2;
函数原型的申明简单了
Sealed explicit gcnew nullptr generic literal MFC
主函数中类类型的变量就是对象 智能的语言都是大小写敏感的C c++
5UL无符号长整型
枚举类型变量:
Enum color(red,yellow,blue);
Int main()
{color c;
c=red;
}
E e是一样的指数 f为单精度 e为双精度 L为双长精度
‘