之前学C。学Python,学的比較多的是Java,作为大家口中更强大的C++,要学学,这次的话,以了解主要的特性和做个小游戏作为目标吧。
1)HelloWorld
Eclipse执行C++之Launch failed,Binary not found
被这个问题困扰了一段时间,还是顺利执行了,第一次用C++写Helloworld。
#include <iostream> using namespace std; int main() { cout << "Hello World!" << endl; return 0; }不用IDE时在命令行窗体的指令:F:>g++ Hello.cpp -o Hello
编译完之后便会有Hello.exe文件。
照样,用新语言写出第一个程序的那种激动。
怎么说。Java的设计也是參考C++的。听过学完C++学Java非常快的。倒是不知道学了Java之后来看C++要多久。看的是《C++程序设计语言》——C++之父——本贾尼·斯特劳斯特卢普。
2)傻瓜问题
VC++和C++
之前没去了解,原来VC++是C++的一个编译环境,提供了Windows界面的库函数,便于开发图形界面的软件。VC++的重点主要是Windows程序设计相关的,可是学好C++是前提。
学C++之前一定要学C吗?
作者在学习之前就提出,注重概念,不要迷失在语言的技术细节上。
事实上有人确实在抱怨说大学一来就学C++,C都没学。事实上不然,直接能够学。
为什么叫C++?
C++,++是增量运算符,C+d的话就是语法错误,为什么不叫D呢。由于是C的扩充。事实上一门语言设计完之后有多人用之后便会成为一种趋势,王垠自己设计了YIN语言,感觉好厉害了。
给C语言学习者的建议
1、C++差点儿不须要宏
# define PI 3.14上面就是宏。将程序中的PI所有替换为3.14。
2、不用在你须要变量之前声明它。曾经写C麻烦的地方就是变量声明放在后面也会编译出错。
3、不用malloc,new照样能够做好。
3)整体
C++是更好的C,支持面向对象。
C++有的基本类型,int。double。char,bool(不是boolean)。运算符加减乘除。%求余。
检測循环和输入输出。
#include <iostream> using namespace std; int main() { cout << "Do you love her? "; char answer = 0; cin >> answer; cout << answer; return 0; } result: Do you love her? y yC++的输入输出好简单,cout << 和 cin >> ,事实上是c out,c in。
cin >> answer; 将输入赋值给answer。
检測循环。if、else、switch、case、for和while。
指针和数组,见到指针不要怕。
int array[10]; //10个整型数组
int *point; // 指向int的指针
point = &array[2]; //point指向array第三个元素
数组就像10个房间,指针就是每一个房间的钥匙,&取地址符,能够将一个房间的钥匙给point。
模块化程序设计
namespace Stack{ void push(char c); char pop(); } void test(){ Stack::push('a'); Stack::pop(); }独立的命名空间。Stack::为限定词,指push方法为Stack的push方法,不会与其它push方法互相干扰。
异常处理,有点意思:
namespace Stack { void push(char c); char pop(); class OverFlow {}; } void f() { throw OverFlow(); } void d(){ try{ Stack::push("a"); } catch(Stack::OverFlow) { // } }
定义类型的模块、用户定义类型这两个详细要再看,光光看概述看不是非常懂。
虚函数。编程思想一书中有提到的东西。
面向对象的程序设计,也是有类class,也有继承这东西。
容器,原来template。模板是在这里出现的。
内容非常多,有一些和Java类似。由于Java本来设计就參考了C++了。
最后作者给的忠告非常有意思:
不是学好全部细节才干设计出好的程序,一切随着时间的推移而明朗,当然这段时间你要不听学习。不然不懂还是不懂。关注程序设计而不是语言特征。