C++标准
======================================
1.C++标准
1998年 --》C++语言规范
2011年 --》C++新的语法
2014年 --》C++新的语法
2017年 --》C++新的语法
如果你的编译器g++,版本太低,有可能新的语法不支持
函数带默认参数
======================================
1.概念
C++允许定义函数的时候,给函数的形参设置默认值
比如:show_anybmp(int w,int h,int x,int y,const char *bmppath)
show_anybmp(int w,int h,int x=0,int y=0,const char *bmppath="1.bmp")
好处/优势
程序员调用这种函数的时候,灵活性很强
如果程序员传递了新参数--》就使用新参数
如果程序员没有传递参数--》就使用默认参数
默认参数,程序员可传可不传,自己掌握主动权
2.语法规则
函数名(形参1,形参2=默认值,形参3=默认值)
第一:函数带默认参数,定义这个函数的时候默认值只能是从右到左连续默认,中间不可以间断
第二:函数带默认参数,程序员调用该函数的时候,传递实参只能从左到右连续传递,中间不可以间断
类和对象
======================================
1.面向对象编程的三大基本思想(C++ java)
类的封装(自定义了类)
继承
多态
2.类和对象
类的思想:日常生活中随处可见
动物--》 哺乳
两栖
行为动作:跑,吃,跳
属性信息:耳朵,颜色
电脑--》笔记本
台式机
飞机--》大型客机
中型客机
小型客机
(1)定义类
class 类的名字 //类名建议你首字符大写
{
类的成员
};
类中的成员
分为两大类:成员属性(成员数据/成员变量) --》描述类具有的参数信息
成员函数(成员方法) --》描述类具有的功能
(2)使用类
定义了一个类,相当于程序员发明了一种新的数据类型
类就是一种数据类型,跟当年你定义结构体一样的道理
语法规则:
数据类型 变量名
int a;
double b;
Animal c; //定义了 Animal类型的变量,变量名叫做c
//定义了Animal类的一个对象,对象名叫做c
struct student stu;
什么是对象
对象指的是你使用类名定义的那个变量,C++把它称之为对象(把变量换了一个称呼)
如何使用类中的成员方法/成员属性
需要定义对象,通过对象去访问类中的成员
(3)类中成员的权限
C++规定:类中的成员有三种权限,分别是公有(public) 私有(private) 保护(protected)
权限的作用:限制外界对于这个类中成员的访问
保护类中的成员数据
权限修饰符:
public: 类中的成员可以通过对象在外部访问
private:类中的成员不可以通过对象在外部访问
protected:类中的成员不可以通过对象在外部访问
private和protected区别:
体现在继承的时候,子类可以使用父类的保护成员,但是子类不能使用父类的私有成员
保护:对外隐藏,对子类不隐藏
私有:到处隐藏
公有:谁都可以用
注意:定义一个类,如果没有使用任何权限修饰符,那么默认都是私有的(private)
一般来说,成员方法我们定义成公有的(方法提供接口给外面使用)
成员属性我们定义成私有的(数据对外隐藏,不给别人轻易使用)
(4)对象调用成员方法/成员属性
写法一:定义了普通对象--》栈空间
Animal a;
a.eat(); //通过小数点
写法二:定义了对象指针--》堆空间
int *a=new int;
Animal *p=new Animal;
p->eat();
3.成员函数的两种写法
写法一:成员函数定义在类的内部
写法二:成员函数定义在类的外部
void Computer::opencomputer()
{
cout<<"电脑开机"<
::叫做类作用域运算符,告诉编译器这个函数是属于Computer这个类的成员函数
注意:如果成员函数的源码特别长--》建议你写在类的外部
4.getxxx和setxxx成员方法去获取/设置成员属性
思路:由于成员属性一般设置成私有的,不能通过对象直接访问
定义成员方法间接去访问成员属性
5.类的大小
类的大小计算规则跟结构体计算规则一模一样
类的大小:只计算成员变量的大小,成员函数不用计算
6.this指针
类定义引用跟基本数据类型写法一致的
int a=99;
int &b=a;
Animal a;
Animal &b=a;
this指针:专门用来指向当前对象地址的一个指针,当前对象是谁,该指针就指向谁
7.重新认识cout和cin
cout本质是ostream类的对象
cin本质是istream类的对象
ostream类和istream类都是在系统
namespace std
{
ostream cout;
istream cin;
}
cout.成员方法();
cin.成员方法();
查看C++的在线函数接口文档
www.cplusplus.com
C++中的字符串string(很重要,使用频率很高)
======================================
1.C++表示字符串的手段方法
方法一:用char类型数组
方法二:用char类型指针
方法三:推荐使用string类表示字符串
class string //C++系统自带的
{
public:
大量公有的方法,帮助程序员处理字符串的各种 *** 作
};
string优势
第一:不必担心字符串长度的问题
第二:大量好用的方法辅助你写代码
2.string中的重要方法
assign
at
back
clear
compare //天坑
//注意:参数表示从str4下标0开始,连续5个字符,去跟str1比较
if(str4.compare(0,5,str1)==0)
copy
c_str
erase
find
insert
length
pop_back
push_back
replace
str1.replace(0,2,str3); //用str3整个字符串替换str1(从0开始2字节的内容)
size
substr
3.遇到的问题
问题一:error: ‘std::__cxx11::string {aka class std::__cxx11::basic_string
原因:back函数是c++11新增的
解决方法: g++ string的常用方法.cpp -std=c++11
-std=c++11 表示采用c++11新标准语法去编译程序
问题二:中文字符串,取单个字符乱码
原因:汉字每一个最少都是两个字节
练习
======================================
1.定义一个含有四个形参的函数,然后给默认值,体会函数带默认参数的两条规则
showbmp(int w,int h,int x,int y)
{
}
2.定义Cat类,里面包含了成员方法和成员属性
3.定义矩形类
要求可以计算矩形的周长,面积
属性:宽,高
定义Bmp类
要求可以显示任意大小的bmp
属性:???
作业
======================================
1.定义一个时间类 class Time
要求:可以设置时间,时分秒
可以打印时间,时分秒
2.定义一个银行账户类 class Bankcount
要求:可以设置户主名字,设置账户余额
有存钱的方法
有取钱的方法
可以打印账户信息
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)