C++基础语法
2016-05-20 19:45
387 查看
简介:
c语句是面向结构的语言,c++是面向对象的语言,C++从根本上已经发生质飞跃,并对c进行丰富的扩展。
c是c++的子集,所以大部c语言程序都可以不加修改的拿到c++下使用。
c++不完全同于C语言,C语言,可以完全植入c++文件(变量,指针,变量,循环,内存等)
c++不完全兼容C
C 语言函数名是不能重名的,但在C++中,函数名可以重复,就叫做函数的重载
1.std 是一个命名空间..
不同的命名空间可以有相同的类名被定义 ..
using namespace std;
就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的
也可以在全局空间中定义,只要名字空间不一样即可..)..
否则可以默认名字空间中有std.便不用std::来修饰
它是C++新标准中有的,解决多人作编大程序时名字冲突问题。比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人
2.cout
C++编程语言互换流中的标准输出流,需要iostream支持。读为 “c out([si:‘aʊt]”
后来随着学习的深入,总算大概明白了cout/cin/cerr/…的鬼把戏:那些东东不过是变着法儿“哄人”,其实说到底还是函数调用,不过这函数有些特殊,用的是运算符重载,确切地说(以下还是以cout为例)是重载了“<<”运算符。我们就让它现出函数的本来面目,请看HelloWorld!的等效版本:
上面程序应该更容易理解了:cout是一个ostream类的对象,它有一个成员运算符函数operator<<,每次调用的时候就会向输出设备(一般就是屏幕啦)输出东东。嗯,这里有一个问题:为什么函数operator<<能够接受不同类型的数据,如整型、浮点型、字符串甚至指针,等等呢?
我想你已经猜到了,没错,就是用运算符重载。运算符函数与一般函数基本无异,可以任意重载。标准库的设计者们早已经为我们定制了iostream::operator<<对于各种C++基本数据类型的重载版本,这才使得我们这些初学者们一上来就享受到cout<<”Hello,World!”<
参考:
http://baike.baidu.com/view/1261354.htm
c语句是面向结构的语言,c++是面向对象的语言,C++从根本上已经发生质飞跃,并对c进行丰富的扩展。
c是c++的子集,所以大部c语言程序都可以不加修改的拿到c++下使用。
c++不完全同于C语言,C语言,可以完全植入c++文件(变量,指针,变量,循环,内存等)
c++不完全兼容C
C 语言函数名是不能重名的,但在C++中,函数名可以重复,就叫做函数的重载
#include <iostream> using namespace::std; int main(int argc, const char * argv[]) { // insert code here... std::cout << "Hello, World!\n"; int a=25; std::cout << "I am a so bad man" << a <<std:: endl; std:: cout << 'a' <<5<<std::endl; cout <<88; cout <<endl; cout << 88<<endl; int x=100; char y='c'; //输入 // cin >>x>>y; // cout <<x<<y; bool b=true; b=false; //字符串(对象)比较 std:: string str="hello world"; string str2="hello"; cout <<str.compare(str2)<<endl; //字符串的增删改查 //增 str.append(str2); //删 str.erase(3,4); //修改 str.replace(1, 2, str2); //查子串 str.find(str2); cout <<str.find(str2)<<endl; return 0; }
1.std 是一个命名空间..
不同的命名空间可以有相同的类名被定义 ..
using namespace std;
就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的
也可以在全局空间中定义,只要名字空间不一样即可..)..
否则可以默认名字空间中有std.便不用std::来修饰
它是C++新标准中有的,解决多人作编大程序时名字冲突问题。比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人
2.cout
C++编程语言互换流中的标准输出流,需要iostream支持。读为 “c out([si:‘aʊt]”
#include<iostream> using namespace std; int main() { int a; cout << "请输入一个数字,按回车结束" << endl; cin >> a; cout << a << endl; return 0; } //用户输入的数字由cin保存于变量a中,并通过cout输出。 #include<iostream> using namespace std; int main() { cout << "Hello,World!" << endl; return 0; }//HelloWorld示例
后来随着学习的深入,总算大概明白了cout/cin/cerr/…的鬼把戏:那些东东不过是变着法儿“哄人”,其实说到底还是函数调用,不过这函数有些特殊,用的是运算符重载,确切地说(以下还是以cout为例)是重载了“<<”运算符。我们就让它现出函数的本来面目,请看HelloWorld!的等效版本:
#include<iostream> using namespace std; int main() { cout.operator << ("Hello,World!"); cout.operator << (endl); return 0; }
上面程序应该更容易理解了:cout是一个ostream类的对象,它有一个成员运算符函数operator<<,每次调用的时候就会向输出设备(一般就是屏幕啦)输出东东。嗯,这里有一个问题:为什么函数operator<<能够接受不同类型的数据,如整型、浮点型、字符串甚至指针,等等呢?
我想你已经猜到了,没错,就是用运算符重载。运算符函数与一般函数基本无异,可以任意重载。标准库的设计者们早已经为我们定制了iostream::operator<<对于各种C++基本数据类型的重载版本,这才使得我们这些初学者们一上来就享受到cout<<”Hello,World!”<
class MyOutstream { public: const MyOutstream& operator << (intvalue)const;//对整型变量的重载 const MyOutstream& operator << (char*str)const;//对字符串型的重载 }; const MyOutstream& MyOutstream::operator<<(intvalue)const { printf("%d",value); return* this;//注意这个返回…… } const MyOutstream& MyOutstream::operator << (char* str)const { printf("%s",str); return* this;//同样,这里也留意一下…… } MyOutstream myout;//随时随地为我们服务的全局对象myout int main() { int a=2003; char* myStr="Hello,World!"; myout << myStr << "\n"; return 0; }
参考:
http://baike.baidu.com/view/1261354.htm
相关文章推荐
- 第六次c++作业
- leetcode - Merge Sorted Array (run time beats 100.00% of cpp submissions.)
- malloc与free的配对使用的注意
- c语言中出现左操作数必须是左值(摘抄)
- C++程序错误集锦,如:thiscall,_tmain已经定义,重载,未定义的标识符
- c++模版应用实例
- c++第6次实验
- C语言可变参数函数
- 在Windows下搭建C++11 编译环境(附下载,包括mingw-build,TDM-GCC, nuwen MinGW Distro)
- C++第六次作业
- 【学习C++】C++ Primer Plus (第六版)第十一章编程练习1-7
- java/C.C++线程while循环无法跳出问题分析
- C++作业6
- 用C语言做520表白图(较简单)
- c++中的回调函数的实现
- 动态链接库使用.def导出一个c++类的函数
- 双向循环链表list(C++)
- C++Lambda学习
- 基于arm的C++反汇编 基本数据类型
- C++第六次上机实验