c++基础2
来源:互联网 发布:互联网大数据面试题 编辑:程序博客网 时间:2024/05/17 04:37
大家好,今天为大家更新第二部分
什么是类、对象和成员
类是由若干个变量和相关的函数组成,而对象则可拥有这些变量和函数。
如果将硬盘比作一个类的话,那么硬盘的品牌则是该硬盘的一个对象,如:希捷硬盘是硬盘的一个对象,型号、容量和转速是该类的数据成员,读取数据、写入数据是该类的方法成员,又叫成员函数;数据成员和成员函数统称为该类的成员,对象拥有并且可以封装这些成员。
声明一个类
#include <iostream.h>
using namespace std;
class Human
{
public:
void GetStature();
void GetWeight();
private:
int stature();
int weight();
} ;
int main(int argc, char *argv[])
{
return 0;
}
(public:)公有的:该类的对象可以直接访问这些成员
(private:)私有的:表示它后面的成员都是私有的,不能被对象直接访问,必须通过公有的成员函数才能访问
定义一个对象
定义一个对象很简单,只需要写下一个类名,空一格,然后敲入你要定义的对象名即可
类与对象的区别:
类是一个抽象的名词,而对象则是实际的个体,比如说人类是泛指所有的人,而Peter却是一个具体的人
#include <iostream.h>
using namespace std;
class Person
{
public:
void GetStature(){
cout<<stature<<endl;
}
void GetWeight();
void SetStature(int x){
stature=x;
}
void SetWeight(int x);
private:
int stature;
int weight;
} ;
void Person::GetWeight()
{
cout<<weight;
}
void Person::SetWeight(int x){
weight=x;
}
int main(int argc, char *argv[])
{
Person peter;
peter.GetStature();
cout<<"peter的身高是:";
peter.SetStature(8);
cout<<endl;
peter.SetWeight(80);
cout<<endl;
cout<<"peter的体重是:";
peter.GetWeight();
return 0;
}
类的声明有两种方法:
第一种
class Person
{
public:
void GetStature(){
cout<<stature<<endl;
}
void GetWeight();
void SetStature(int x){
stature=x;
}
void SetWeight(int x);
private:
int stature;
int weight;
} ;
第二种:
void Person::GetWeight()
{
cout<<weight;
}
定义类和对象容易犯的错误
类是个抽象的名词,它不是具体的某个个体,因此我们无法对它进行赋值操作
int = 5;这个是错误的,int是一个类型,不是具体的个体,应改为 int a=5;
注意点:
① 要使用关键字class来声明一个类
② 要使用类名来定义一个对象
③ 不能混淆声明和定义,声明是说明该类是什么,定义则是为一个对象分配内存
④ 要用点运算符来访问类的成员
⑤ 要使用对象与点运算符访问对象的数据成员并给它们赋值
⑥ 不要混淆类和对象,不要给类赋值
最后:
函数是用来执行一定功能的代码块,成员函数则是只能被类的对象所使用的函数;对象只能使用该类的函数,假如类没有提供某个函数,那么对象就不具备该函数
公有与私有
关键字public可以将类的成员说明为公有,即可以被该类的所有成员访问
如果在类中定义的成员没有加public: 关键字的话,则是默认为私有的成员(private:),私有成员不能被对象直接访问,只能通过在类中设定的接口函数来访问
内联函数
关键字inline声明函数,使用内联函数在提高效率的同时,也会增大程序的体积,当函数的体积很小的时候,使用内联函数很划算的。在不知道具体情况的时候最好不要用内敛函数
#include<iostream>
using namespace std;
inline int print();
int print(){
return 1;
}
inline int func(int);
int func(intx){
return x;
}
int main(){
int x;
cout<<"请输入一个数字\n";
cin>>x;
cout<<"输出的数字为:"<<func(x)<<endl;
cout<<print()<<endl;
}
头文件与源文件
我们可以将类的声明和定义存放在一个文件,一般是后缀为.h的文件,将程序执行的部分也存放在一个文件,一般是.cpp文件,这样就可以在.cpp文件的顶端写下代码使文件.h和.cpp相连:
# include “*.h”,中间的*是你给该文件取得名字
将类的定义和实现部分分开后,一个.h文件可以同时被多个.cpp文件所调用
const成员函数
如果不想让某个成员函数修改成员变量的值,那么就将这个成员函数声明为const
对于不应当改变对象的成员函数都应该声明为const,这样假如该成员函数视图去修改该对象的成员变量,编译器会提示错误
构造函数
在创建某个类的对象时,由于对该对象的状态(数据)不是很明确,因此需要对其进行初始化。
构造函数没有返回值
默认构造函数
如果我们不提供一个构造函数,那么系统会为我们自动创建一个构造函数,该函数什么参数也没有,而且也不会执行任何功能,它的作用只是构造一个对象。
我们可以创建多个构造函数,比如说可以创建一个类似于默认构造函数的不带参数的构造函数,同时也可以创建一个带参数的构造函数。
析构函数
析构函数与构造函数相反,构造函数用于构造一个空间,西沟函数则用于在对象被销毁后清除它所占用的内存空间,比如说它可以清楚由构造函数创建的内存
析构函数和构造函数基本一样,只是多了一个~,析构函数和构造函数都无返回值,析构函数不能有参数,一个类只能有一个析构函数,但是可以析构数组
#include<iostream>
using namespace std;
class rectangle
{
public:
/*当没有定义构造函数的时候,系统自动为类生成无参数的构造函数*/
rectangle();
~rectangle();
void func(int x,int y){height=x;width=y;}
void print() const{cout<<"长方形的面积是:"<<height*width<<endl;}
private:
int height;
int width;
};
rectangle::rectangle()
{
}
/*析构函数用来释放内存空间的*/
rectangle::~rectangle()
{
}
int main(){
rectangle rec;
rec.func(2,6);
rec.print();
return 0;
}
循环语句-goto
goto语句是最古老的语句,由一个名字加上一个”:”,就成为一个标号,该标号通常被放置在一段可执行的c++语句的左边,也就是i++的左边,通过它后面的goto语句来实现跳转
goto语句是一个转向语句,表示无条件的跳转到标号处
由于goto语句能直接跳到程序的某一处开始执行,因此会导致很多不易察觉的错误,并且是程序结构看上去不那么严密,松散很多
goto语句一旦出了错误,调试起来的话,很困难的,所以一般不用
while语句
当条件为真则执行括号里面的表达式,也就是说一直做到条件不满足才停止的,if语句只会执行一遍
当while的条件为真的时候,则while永无休止的执行下去
continue和break
当程序执行到某处就不再执行后面的语句,回到开始处执行,continue语句不执行它后面的语句
break只是退出循环,并不会退出整个语句
do-while
do不管程序是否满足要求,程序至少会执行一次
switch
当switch语句中如果没有break语句的结束,直到遇到右大括号才结束
总结:
假如想要无条件的跳转到某条语句执行,用goto语句,
假如想要对某种条件进行判断,为真或者为假分别执行不同的语句,用if语句
假如需要检测的条件很多,用if……else 语句
假如对数字或者字符检测并且需要检测的条件又很多,用switch语句,
假如能确定循环次数,用for语句,
假如不能确定循环次数,用while语句
假如循环体中的语句至少要执行一次,那么用do……while语句
最后,continue可以使循环又一次重新开始,而break可以使循环指教结束。
接下来的笔记很重要,进入指针,数组等学习阶段了
- c基础(2)
- c基础2
- c语言基础 2
- C++SDL---基础2
- C基础 2
- c语言基础 (2)
- C基础2
- c语言基础2
- C语言基础2
- 2、C语言基础
- Linux C基础2
- C 基础练习2
- 基础c语言程序设计2
- C语言程序设计(基础2)
- C语言基础-2
- C语言基础2
- c语言基础(2)--c语言概述
- 【C语言基础】1-2 C语言基础代码
- 【好文章要分享】C#程序调用非托管C++ DLL文件的方法
- 娱乐为主这样也蛮酷
- 在Eclipse中使用Maven配置WebDriver+Testng(二)
- 字典树入门及实现(JAVA)<转>
- (intermediate) 网络流:矩阵模型 UVA 11082 - Matrix Decompressing
- c++基础2
- js获取日期
- Hibernate annotation多对多相关要点总结
- oracle 创建视图添加表中没有的数据但不影响表
- 点亮屏幕
- 13-14寒假作业11
- 季莫申科:俄向乌克兰宣战等同向美英宣战
- JavaScript 实现简单的倒计时弹窗DEMO
- MFC的一些基本操作