前言
C语言的绝大部分知识我的C语言系列文章已经讲的差不多了(就是在下复习的差不多了= =),很多课堂上粗粗带过不细讲或者不要求的东西都可以在那些文章里找到代码例子和注释,重要部分我还在代码外面打了字。
我用的教材是谭浩强的《C++面向对象程序设计》一书,这篇文章就参考第一章节写了
面向对象四大特征:
抽象(类、对象)
封装(私有成员、公有成员)
继承(派生类)
多态(重载、虚函数?)
"标准C++"
1.C++标准要求由系统提供的头文件不带.h,而用户自己编写的头文件可以有.h
#include<string>//引用c++的库
#include<cstring>//引用c的库(前面加了c,c++对c的扩充将原c的库前都加了c,详见手册)
#include"string.h"//引用自己写的头文件
这个细节关系到常用的string对象能不能被cout!!!
2.标准C++要求main函数必须是int型【而C的创造者说C只允许是void型】
#include<iostream>//C++标准要求由系统提供的头文件不带.h,而用户自己编写的头文件可以有.h
using namespace std;//命名空间
int main()//标准C++要求main函数必须是int型【而C的创造者说C只允许是void型】
{
cout << "hellow world!"<<endl;//c++中 的输出流对象、<<是插入运算符
return 0;
}
c++中 的输出流对象、<<是插入运算符,将右侧字符串插入到输出队列中
【对比c,不用手动输入相应的格式控制符,但同时输出流可以进行进制的控制】……
完整的5条详见P3
“面向对象”
请看例子和注释,看着不舒服请复制到自己的IDE中观看更佳~~~
#include<iostream>
using namespace std;
class Student
{
private://自此向下为私有成员
int num;
public: //自此向下为私有成员(不写private的话,默认全部是私有,struct在C++里则是公有)
void set()
{
cout << "请设置stud1的值" << endl;
cin >> num;
}
void display()
{
cout << num << endl;
}
};
Student stud1, stud2;//对象
int main()
{
/*cout << stu1.num << endl; //因为是私有成员,所以引用会报错*/
stud1.display();//会被默认赋值为0了!
stud1.set();
stud1.display();//实现了操作与数据的分离,我们只能调用对象的操作
return 0;
}
结构体和对象的区别
简单的说,类和对象是对一件事物的抽象,可以有自己的访问方式(如public),成员变量,成员函数,继承和被继承这样的关系。
而结构体,只是用来表示一个结构的,它有成员变量,成员函数(c++后来加入的……)。但是没有访问方式和继承这样的关系,它只是用于表示一种数据结构
C=========
Struct结构体名
{
Int成员名;
};
Struct结构体名 结构体变量名; //创建
结构体变量={12,chenqian,M}; //赋值
结构体变量名.成员名; //调用
(成员全是公有的)
C++=======
class 类名
{
Private:
Int数据成员名;
Public:
Void成员函数名(int对象.数据成员名);//类内私有成员“接口“
};
Void类名::成员函数名(int对象.数据成员名);
{………………} //类外定义成员函数
最重要的差别是:类还可以继承和派生【但是c++为了兼容c,直接把class略作改动支持关键字struct,导致c++例的结构体也都可以继承……】
引用成员:【c的版本在我的指针_三种方式访问成员、动态内存分配一文中可以找到】
1. 对象.public成员;
2. (*指向对象的指针).public成员; //这就是"."比"*"优先级高,不得不加上()。
3. 指向对象的指针->public成员; //为了省上一行事而发明出的运算符