您的位置:首页 > 编程语言 > C语言/C++

C++基础语法

2016-05-20 19:45 387 查看
简介:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: