• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++基础入门教程(一):基础知识大杂烩

C++基础入门教程(一):基础知识大杂烩

作者:笨木头 字体:[增加 减小] 来源:互联网 时间:2017-05-28

笨木头 通过本文主要向大家介绍了c++入门基础,c++零基础入门书籍,c++入门教程,c++入门经典,c++入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

我很郁闷,这本书果然讲得很详细,我在看第二章,看完要深呼吸,实在太详(lao)细(dao)了。
不过这很好,后面难一些的内容应该会不错~
 
那么,这章只是作为预览的章节,我抽出一些稍微比较有营养的内容记录一下吧~
 
注意:本系列教程不适合无任何编程语言基础的朋友,只是作为C++基础的一种补充。
教程内容基于《C++ Primer Plus》一书,适合初学者,熟手请直接忽略。

1. 如果你不注释,那么,我会把你注释掉~!

C++的注释有2种,
第一种,单行注释,那就是://
如下代码:
    // 呵呵
    Test* t = new Test();;
</div>
//后面跟着的就是注释内容,属于单行注释
所谓的注释,就是与代码无关的内容,与编译器无关的内容,只是给我们自己或者其他人看的。
就像是说明书。
 
另外还有一种注释,那就是:/* */
如下代码:
/*
呵呵
你刚刚说什么来着?
*/
Test* t = new Test();;
</div>

/**/中间可以放一段文字,这是多行注释。
 
这废话就不多说了。

另外要说一下废话(小若:刚刚谁说废话不多说来着?),那就是注释真的很重要~!
不要听那么大牛说什么变量名字取得好、函数名字取得好就不需要注释。
每个人对“好”是有不同的评价的,所以注释很重要,谁喜欢看那些一整页都没有注释的代码呢?
不管是英文注释还是中文注释,都能让其它人或者自己以最快的速度了解某段代码的意思。
 
没错,如果遇到那些自以为自己写得一手完美代码的人,一个注释都不写的,那么,你就把他整个人给注释掉吧~!

2.头文件

语言本身除了语法之外,最重要的应该就是各种库了。
各种库,也就是它的各种功能,我们只要调用一些函数就能完成特定的功能。
比如打印文字、读写文件什么的。
 
C++提供了很多这样的库,它们被分别存放在不同的文件中。
如果想使用这些库里面的函数,就要包含这些库的头文件。
 
所以,我们经常会看到下面的代码:
#include "hello.h"
#include <iostream>
</div>

#include就是用来包含头文件的,包含头文件之后就能使用某个库的函数了。
那么,为什么有些头文件是.h结尾,有些又没有呢?
其实现在C++默认规定是不需要.h结尾的,.h结尾只是以前留下来的习惯~
但,其实现在大家在新建类文件的时候还是习惯保留.h,而C++自带的库可能更多的是没有后缀的。
 
其实头文件就是一个文件,什么结尾关系不大(大部分情况下),所以有时候我们也能看到.hpp结尾的文件。
这个就不多说了~
 
总而言之,如果你编译代码的时候报错,说什么不能使用未声明的类型之类的,基本上就是没有包含相应的头文件了。

3.命名空间

作为初学者,应该常常见到下面的代码(小若:难道不是初学者就不常见吗?):
#include "cocos2d.h"
using namespace cocos2d;
</div>

比如我们要使用Cocos2d-x的Sprite类,这个类是在cocos2d.h库中的,所以我们首先要包含cocos2d.h头文件。
然后就使用Sprite这个类,比如:Sprite* sp = Sprite::create(“boy.png”);
但相信大家都试过,这么直接用会报错的,大概是说找不到Sprite。
 
这是因为Sprite是在某个命名空间里的,我们要这样使用它:cocos2d::Sprite* sp = cocos2d::Sprite::create(“boy.png”);
这样就没问题了,那么,命名空间是个什么东西?

4.不同库的相同类名冲突

我们先来跑一下题,假设我想贡献一下,给大家写一个更好用的库(头文件叫做mutou.h),然后,其中也有一个类叫做Sprite。

于是,大家会这么使用我的库:Sprite* mSp = Sprite::new(“girl.png”);
 
那么,问题来了,学挖掘机哪家…(小若:停~!回来!别跑题!)
那么,如果我们想同时使用cocos2d和mutou的Sprite类,会发生什么事情?如下代码:
#include "cocos2d.h"
#include "mutou.h"
Sprite* sp = Sprite::create("boy.png");
Sprite* mSp = Sprite::new("girl.png");
</div>

这样一定会报错,大概是说Sprite不明确
所以,这个时候,就需要一个叫做“命名空间”的东西来区分这些不同库的相同名字的类了。
我们把cocos2d的库放到名为cocos2d的命名空间里,把mutou的库放到名为mutou的命名空间里:

#include "cocos2d.h"
#include "mutou.h"
cocos2d::Sprite* sp = cocos2d::Sprite::create("boy.png");
mutou::Sprite* mSp = mutou::Sprite::new("girl.png");
</div>

这么使用就不会出问题了,至于如何把某个库放到某个命名空间中,其实很简单,但是这里先不介绍了。

5.偷懒

回到最初,using namespace cocos2d;又是什么东西呢?
如刚才所见,在Sprite前面总是要加上cocos2d::这样的前缀,实在是太烦人了。
所以,我们可以偷懒,使用了using namespace cocos2d;之后,就不需要写这样的前缀了。
 
但是,这只是在没有冲突的情况下,如果遇到刚刚说的不同库的相同类名冲突,就必须使用前缀。
 
书上有提到,滥用using namespace不是什么好事,但我没有经历过什么坑,可能在大型项目中才会出现问题吧。
一般的手游是没什么影响了。
 
如果担心的话,可以这样使用:using namespace cocos2d::Sprite;
这样依旧可以不用cocos2d::前缀就能使用Sprite类,但如果要用到cocos2d库的其他类,就又要再一次使用using namespace cocos2d::name;
总之,这种方式就是:用到的类才使用using声明。可以节省一些开支。

6.结束

好吧,前面的内容实在是太基础,基础到没东西可以介绍了。
下一章应该会好一些…

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++基础入门教程(七):一些比较特别的基础语法总结
  • C++基础入门教程(六):为什么创建类的时候要用new?
  • C++基础入门教程(四):枚举和指针
  • C++基础入门教程(一):基础知识大杂烩

相关文章

  • 2017-05-28string,CString,char*之间的转化
  • 2017-05-28深入内存对齐的详解
  • 2017-05-28C++将CBitmap类中的图像保存到文件的方法
  • 2017-05-28基于C语言EOF与getchar()的使用详解
  • 2017-05-28VC++实现文件与应用程序关联的方法(注册表修改)
  • 2017-05-28C++基础入门教程(七):一些比较特别的基础语法总结
  • 2017-05-28VC程序设计小技巧20例
  • 2017-05-28用C语言的泛型实现交换两个变量值
  • 2017-05-28C语言求圆周率的简单实现方法
  • 2017-05-28C语言实现带头结点的链表的创建、查找、插入、删除操作

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 关于C/C++中的side effect(负效应)和sequence point(序列点)
    • Cocos2d-x UI开发之文本类使用实例
    • 使用Inotify 监控目录与文件的方法详解
    • C++在C语言基础之上增强的几个实用特性总结
    • va_list(),va_start(),va_arg(),va_end() 详细解析
    • Linux下g++编译与使用静态库和动态库的方法
    • C++中几种将整数转换成二进制输出的方法总结
    • C++函数重载的深入解析
    • 浅谈C++中的mutable和volatile关键字
    • C++ 实例之九宫格广度优先遍历

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有