作者:gzshun. 原创作品,转载请标明出处!
来源:http://blog.youkuaiyun.com/gzshun
类(class)是C++面向对象程序设计的核心,它是实现抽象类型的工具。类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象,而对象是某一种类的实例。
本文稍微说一下类和对象的基本使用,比较简单也是最基本的C++基础。
一. 类
类的定义有2个部分:声明部分和实现部分。
声明部分:用来声明类中的数据成员和成员函数(方法)。 ->告诉用户"干什么?"。
实现部分:用来对成员函数的定义。 ->告诉用户"怎么干"。
公有成员,在程序的任何地方都可以被访问。
2.private
私有成员,只能被成员函数和类的友元访问。
3.protected
保护成员,用于继承中。
本实验是在Code::Blocks工具中进行的,为了规范性,这里总共创建了3个源文件:main.cpp test1.cpp test1.h
main.cpp: 主程序
test1.cpp: test1.h头文件中的类的定义
四. 类的定义
当类的成员函数的函数体在类的外部定义时,必须由作用域运算符"::"来通知编译系统该函数所属的类。
五. 对象的定义
CAnimal类的概念已经创建出来,现在就要实例化出一只动物,这里就用阿猫阿狗来举例。以下用2种方式来实例化对象:
1.CAnimal dog; //创建出了一只dog
2.CAnimal *cat = new CAnimal; //动态创建了一只cat
以下贴出使用dog和cat的具体操作:
六. 程序运行结果
七. C++中class与struct的区别
在C++面向对象语言中,class和struct的功能很相似,struct也是一种类。
区别:
一个struct也是一个class,但是struct的默认方式是公用部分,而class的默认方式是私用部分。
以下使用代码说明,下面的class与struct是等价的:
八. 为什么类的定义以分号结束
这是什么问题?有人说我很无聊。
其实并不单单类的定义要以分号结束,C++中的struct也要以分号结束。原因很简单,因为咱们的使用习惯,或者说是编译器编译程序要考虑的情况,在定义之后,可以接一个对象的定义列表,理所当然要以分号结束。
看几个简单的例子:
3.int a, b, c; //O(∩_∩)O哈哈~
本博文是非常基础的,由简单循序渐进到复杂,这样才能培养出兴趣与恒心!
来源:http://blog.youkuaiyun.com/gzshun
类(class)是C++面向对象程序设计的核心,它是实现抽象类型的工具。类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象,而对象是某一种类的实例。
本文稍微说一下类和对象的基本使用,比较简单也是最基本的C++基础。
一. 类
类的定义有2个部分:声明部分和实现部分。
声明部分:用来声明类中的数据成员和成员函数(方法)。 ->告诉用户"干什么?"。
实现部分:用来对成员函数的定义。 ->告诉用户"怎么干"。
二. 类的关键字
1.public公有成员,在程序的任何地方都可以被访问。
2.private
私有成员,只能被成员函数和类的友元访问。
3.protected
保护成员,用于继承中。
三. 类的声明
下面只提供最简单的类声明,因为一个真正的类,还会涉及到很多性质或者特点。本实验是在Code::Blocks工具中进行的,为了规范性,这里总共创建了3个源文件:main.cpp test1.cpp test1.h
main.cpp: 主程序
test1.cpp: test1.h头文件中的类的定义
test1.h: 类的声明
//test1.h
#ifndef TEST1_H_INCLUDED
#define TEST1_H_INCLUDED
class CAnimal
{
public:
int getAge();
void setAge(int age);
void addAge();
private:
int mAge;
};
#endif // TEST1_H_INCLUDED
四. 类的定义
当类的成员函数的函数体在类的外部定义时,必须由作用域运算符"::"来通知编译系统该函数所属的类。
//test1.cpp
#include "test1.h"
int CAnimal::getAge()
{
return mAge;
}
void CAnimal::addAge()
{
mAge++;
}
void CAnimal::setAge(int age)
{
mAge = age;
}
五. 对象的定义
CAnimal类的概念已经创建出来,现在就要实例化出一只动物,这里就用阿猫阿狗来举例。以下用2种方式来实例化对象:
1.CAnimal dog; //创建出了一只dog
2.CAnimal *cat = new CAnimal; //动态创建了一只cat
以下贴出使用dog和cat的具体操作:
//main.cpp
#include <iostream>
#include "test1.h"
using namespace std;
int main()
{
//dog
CAnimal dog;
dog.setAge(12);
cout << "Dog is " << dog.getAge() << " years old." << endl;
cout << "After one year." << endl;
dog.addAge();
cout << "Dog is " << dog.getAge() << " years old." << endl;
//cat
CAnimal *cat = new CAnimal;
cat->setAge(12);
cout << "Cat is " << cat->getAge() << " years old." << endl;
cout << "After one year." << endl;
cat->addAge();
cout << "Cat is " << cat->getAge() << " years old." << endl;
return 0;
}
六. 程序运行结果
Dog is 12 years old.
After one year.
Dog is 13 years old.
Cat is 12 years old.
After one year.
Cat is 13 years old.
七. C++中class与struct的区别
在C++面向对象语言中,class和struct的功能很相似,struct也是一种类。
区别:
一个struct也是一个class,但是struct的默认方式是公用部分,而class的默认方式是私用部分。
以下使用代码说明,下面的class与struct是等价的:
class:
class CAnimal
{
//默认是private
int mAge;
public:
int getAge();
void setAge(int age);
void addAge();
};
<=>
struct:
struct CAnimal
{
//默认是public
int getAge();
void setAge(int age);
void addAge();
private:
int mAge;
};
八. 为什么类的定义以分号结束
这是什么问题?有人说我很无聊。
其实并不单单类的定义要以分号结束,C++中的struct也要以分号结束。原因很简单,因为咱们的使用习惯,或者说是编译器编译程序要考虑的情况,在定义之后,可以接一个对象的定义列表,理所当然要以分号结束。
看几个简单的例子:
1.class
class CAnimal
{
//...
}dog, cat;
2.struct
struct CAnimal
{
//...
}dog, cat;
3.int a, b, c; //O(∩_∩)O哈哈~
本博文是非常基础的,由简单循序渐进到复杂,这样才能培养出兴趣与恒心!