【C++编程】
来源:互联网 发布:php上传文件带进度条 编辑:程序博客网 时间:2024/06/06 13:25
目录
- 目录
- 类与对象
- 类的声明
- 成员函数
- 成员访问限定符
- 对象的定义
- 对象的存储模型
- 类的声明
- class与struct的区别
类与对象
在C++中,类是对象的抽象,而对象是类的具体实例。简单说对象的类型就是类。
因为类是抽象的,所以不占用内存空间。而对象是具体的,系统会给对象分配存储空间。
类的声明
C++对类的声明的一般形式:
class 类名{public: //公有的属性和成员函数;private: //私有的属性和成员函数;protected: //保护的属性和成员函数;};
成员函数
成员函数的实现有两种方法,第一种在类内实现,第二种在类外实现。但是考虑类的封装,建议最好将成员函数的实现在类外实现。这样写出来的类清晰明了,实现类的接口与实现细节分离。
class Test{ public: int x_; void setXYZ(int x, int y, int z); //成员函数的声明 void display(); //成员函数的声明 private: int y_; protected: int z_;};
inline函数定义:在类内定义的成员函数,系统默认为内置函数,内置函数也可以显式声明,在类外实现。
inline函数作用:为了减少运行时间,典型的空间换时间例子。
成员访问限定符
1、public:类与外部的接口,外部函数可以访问公有属性和成员函数。
2、private:只允许本类中的函数访问,类外没有访问权限。
3、protected:与private相似,只允许本类中的函数访问,类外没有访问权限。差别在于继承和派生时对派生类的影响不同。
对象的定义
对象的定义有三种:
- 先声明类类型,再定义对象
- 在声明类的同时定义对象
- 不出现类名,直接定义对象
如:class student stud1;
对象的存储模型
同一类的不同对象中的数据成员的值一般不同,但是不同对象的函数的代码是相同的。
this指针:指向本类对象的指针,它的值是当前被调用的成员函数所属对象的起始地址。
当你实现成员函数的时候,发现需要返回成员函数的地址,此时需要用到this指针。
class与struct的区别
/*****************************************************Copyright (C): 2017-2018 File name : main.cppAuthor : ZhengqijunDate : 2017年02月28日 星期二 11时56分45秒Description : 主函数Funcion List : main*****************************************************/#include <iostream>using namespace std;class people //类{ int x_;};struct person //结构体{ int y_;};int main(){ class people a; //定义对象 struct person b; //定义结构体变量 a.x_ = 1; b.y_ = 2; cout << a.x_ << endl; cout << b.y_ << endl; return 0;}
编译如下所示:
main.cpp: In function ‘int main()’:main.cpp:16:6: error: ‘int people::x_’ is private int x_; ^main.cpp:29:4: error: within this context a.x_ = 1; ^main.cpp:16:6: error: ‘int people::x_’ is private int x_; ^main.cpp:32:12: error: within this context cout << a.x_ << endl; ^
从编译结果可以看出,类的属性默认为私有的,外部不能访问,结构体的属性默认为公有的,外部可以访问。所以编译器报了不能访问x_,可以直接访问y_。
1 0
- C编程
- c编程
- C编程
- c编程
- C编程
- c编程
- C编程
- c编程
- c编程
- C编程
- C编程
- 【C/C++】CGI编程
- Linux C编程---网络编程
- Linux C编程网络编程
- Linux C编程---网络编程
- linux c编程--文件系统编程
- Linux C编程---网络编程
- linux-C编程-网络编程
- phpcms设计缺陷未审核文章也可看,解决
- Orchid select 剖析
- 优越数
- 欢迎使用CSDN-markdown编辑器
- Kruskal算法详细分析
- 【C++编程】
- hudson +gradle+git+maven(非必选)持续集成一 打包自动化
- PAT A1108. Finding Average (20/17)
- git入门操作
- 全排列的递归与非递归实现
- 记录国王马戏团的点点滴滴
- 疯狂Java笔记:3.1 注释
- 嵌入式LinuxC语言小常识
- Android笔记之获取文件MimeType