c++学习总结(第一篇)

之前对c++只是耳闻而没有接触过,最近在公司做的iOS项目是以c++作为数据层的,所以必须要学习c++。之前这篇博客在oschina发布过了,但是那个账号也同时也有iOS的一些总结的东西,所以有点乱,我也不会整理目录结构,所以直接把那边的文章转移到这边发布了。


1、Objective-C与C++混编

设置项目:Build Settings->Apple LLVM 5.0-Language->Compile Source As,选择Objective-C++,这样就可以在项目中编写C++代码了。

2、导入标准输入输出库

#include <iostream>

导入这个库就可以进行一些输入输出操作了,以输出举例说明,先写好输出的语法,然后再填充想要输出的数值,

语法:std::cout<<<<std::endl;

(1)如果我想输出"Hello World"字符串,那么在左尖括号中间加上该字符串,

std::cout<<"Hello World"<<std::endl;

(2)定义一边变量variable,我想输出"variable is : 7"

int variable = 7;

std::cout<<"variable is: "<<variable<<std::endl;

其实想明白这个语句的原理,写起输出代码也就没有那么纠结了。

20140409

3、变量初始化

变量定义制定了变量的类型和标识符,也可以为对象提供初始值。定义时指定了初始值的对象被称为是已初始化的。C++支持两种初始化变量的形式:复制初始化和直接初始化,复制初始化语法用等号(=),直接初始化则把初始化放在括号中,

int val1(1024);//直接初始化-direct initialization

int val2 = 1024;//复制初始化-copy initialization

在C++中“初始化不是赋值”,初始化指创建变量并给它赋初始值,而赋值则是擦出对象的当前值并用新值代替。直接初始化语法更灵活,效率更高

4、string初始化的几种方式

(1)std::string titleA = "C++ Primer,Ed";

(2)std::string titleB("C++ Primer,Ed");

(3)std::string all_nines(10,'9');//all_lines is "9999999999",使用字符计数器初始化。

其实就是使用多个不同的构造函数初始化对象。

5、声明和定义

定义:变量的定义用于为变量分配存储空间,还可以为变量指定初始值,在一个程序中,变量有且仅有一个定义。

声明:声明用于想程序表明变量的类型和名字。定义也是声明:当定义变量时我们声明了它的类型和名字。可以通过extern关键字声明变量名而不定义它。不定义变量的声明包括对象名、对象类型和对象类型前的关键字extern,

extern int i;//声明变量,但是没有定义

int i;//定义变量,同时也是声明

extern声明不是定义,也不分配存储空间,它只是说明变量定义在程序的其他地方。程序中变量可以声明多次,但只能定义一次

只有声明也是定义时,声明才可以有初始化(PS:这里有点饶人,定义一定是声明,而声明不一定是定义),因为只有定义才分配存储空间。初始化必须要有存储空间来进行初始化,如果声明有初始化式,那么它可被当做是定义,即使声明标记为extern,

extern double pi = 3.1415926;//这时候声明是定义

只有当extern声明位于函数外部时候,才可以含有初始化式,例如下面的代码是在main函数之外使用声明并初始化PI对象,

extern double PI = 3.1415926;


int main(int argc,char *argv[])

{

    return 0;

}


因为已经初始化的extern声明被当做是定义,所以该变量任何随后的定义都是错误的,看下面的代码

extern double PI = 3.1415926;//声明并初始化,相当于定义

double pi;//错误,不能再次定义PI对象


同样,随后的含有初始化式的extern声明也是错误的,

extern double PI = 3.1415926;//声明并初始化,相当于定义

extern double PI;//正确,声明了但是没有定义对象

extern double PI = 3.1415926;//错误,重复定义对象PI


总结:声明和定义之间的区别看起来可能微不足道,但事实上却是举足轻重的。在C++语言中,变量必须仅能定义一次,而且在使用变量之前必须定义或声明变量。

任何在多个文件中使用的变量都需要有余定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。


个人感悟:

对于上面提到的一些细节方面,比如直接初始化和赋值初始化、以及声明和定义的区别,还是要慢慢领悟的。对于这些基础的概念,可能在编码的时候使用的不多,但是对于深层次的理解一种语言的特性还是很有帮助的,日积月累、厚积薄发,总有一天会体会到这种修炼内功的好处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值